Когда мне следует вызвать setContentAspectRatio? - PullRequest
1 голос
/ 05 января 2012

Я хотел бы иметь NSWindow, которое имеет отношение ширины к высоте 2: 1, когда оно открыто, но позволяет ему иметь любое соотношение в полноэкранном режиме.

Я изначально устанавливаю соотношение контента в AppDelegate следующим образом:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [[self window] setContentAspectRatio:NSMakeSize(2, 1)];
}

, а затем установите и восстановите его в NSWindowDelegate окна следующим образом:

- (void)windowWillEnterFullScreen:(NSNotification *)notification
{
    NSWindow *window = [notification object];
    [window setContentResizeIncrements:NSMakeSize(1, 1)];
}

- (void)windowDidExitFullScreen:(NSNotification *)notification
{
    NSWindow *window = [notification object];
    [window setContentAspectRatio:NSMakeSize(2, 1)];    
}

Я думаю, что это работает, но я не уверен, что AppDelegate - правильное место для настройки размера окна. Я пытался найти метод в делегате окна в соответствии с windowDidLoad:, но я не вижу, какой из них применим. В идеале я бы установил соотношение контента только в одном месте.

Куда я должен поместить код инициализации для каждого окна, как этот?

1 Ответ

0 голосов
/ 05 января 2012

Возможно, будет удобнее использовать windowController (создайте подкласс, если вы просто используете значение по умолчанию).Вы должны сделать это делегатом вашего окна (и поместить в него код входа / выхода) и контролировать начальный размер окна в windowDidLoad:

...