gpt4 book ai didi

objective-c - NSWindow setAspectRatio 是否包括顶部栏的大小?

转载 作者:行者123 更新时间:2023-12-03 17:41:15 24 4
gpt4 key购买 nike

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

我通过在 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:

关于objective-c - NSWindow setAspectRatio 是否包括顶部栏的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com