Objective c NSWindow setAspectRatio是否包含顶栏的大小?

Objective c NSWindow setAspectRatio是否包含顶栏的大小?,objective-c,cocoa,resize,interface-builder,nswindow,Objective C,Cocoa,Resize,Interface Builder,Nswindow,在我目前正在开发的程序中,我想锁定主窗口的纵横比,以确保某些视觉元素保持比例 通过在AppDelegate类中执行以下操作,我成功地实现了这一点: - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { [window setAspectRatio:NSMakeSize(1.48, 1.0)]; } 每当用户拖动窗口时,纵横比都会像我预期的那样被锁定,但有一个问题。我在IB中指定了一个窗口大小

在我目前正在开发的程序中,我想锁定主窗口的纵横比,以确保某些视觉元素保持比例

通过在AppDelegate类中执行以下操作,我成功地实现了这一点:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 

    [window setAspectRatio:NSMakeSize(1.48, 1.0)];

}
每当用户拖动窗口时,纵横比都会像我预期的那样被锁定,但有一个问题。我在IB中指定了一个窗口大小为592x400,它确实符合纵横比,但是当我第一次尝试在应用程序运行时调整窗口大小时,窗口会快速捕捉到一个新的比例。我猜setAspectRatio:可能会进入窗口顶部的栏中,从而扰乱计算

有人知道解决这个问题的好办法吗,或者其他的方法吗

另外,是否有其他方法可以根据setAspectRatio设置的纵横比通过编程调整窗口大小

以前,当以编程方式更改尺寸时,我一直使用:

[window setContentSize:NSMakeSize(592, 400)];
我测试了它,以确认它忽略了指定的纵横比,正如预期的那样


谢谢

IB中的大小是内容大小-它不包括标题栏的22个点(假设为标准标题栏)。您需要的是使用
setContentAspectRatio:


至于编程调整大小,没有API。您应该决定哪个维度是您的参考,然后适当地乘以或除以内容纵横比以得到另一个维度,然后像以前一样
setContentSize:

非常感谢,我甚至没有注意到setContentAspectRatio:当我查看文档时!它不是放在带有setAspectRatio:的“调整窗口大小”标题下,而是放在“调整内容大小”标题下。只是在我的程序中更改了它,效果很好!