我什么时候应该调用setContentAspectRatio?

时间:2012-01-04 21:35:41

标签: objective-c macos appkit

我希望有一个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 :(得分:0)

使用windowController可能更简洁(如果您只使用默认值,则创建一个子类)。您可以将窗口设置为委托(并输入您拥有的输入/退出代码),并在windowDidLoad中控制窗口的初始大小: