1

在我目前正在处理的一个程序中,我想锁定主窗口的纵横比,以确保一些视觉元素保持成比例。

我已经设法通过在 AppDelegate 类中执行以下操作来完成这项工作:

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

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

}

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

有没有人知道这个问题的一个体面的解决方法,或者任何替代方法?

此外,是否有另一种以编程方式调整窗口大小的方法,以尊重 setAspectRatio 设置的纵横比?

之前,在以编程方式更改大小时,我一直在使用:

[window setContentSize:NSMakeSize(592, 400)];

正如预期的那样,我已经对其进行了测试以确认它忽略了指定的纵横比!

谢谢!

4

1 回答 1

3

IB 中的大小是内容大小 - 它不包括标题栏的 22 磅(假设是标准标题栏)。你想要的是使用它setContentAspectRatio:

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

于 2012-11-22T03:13:00.363 回答