Macos 在Mac OS X中调整NSWindows大小和固定比率

Macos 在Mac OS X中调整NSWindows大小和固定比率,macos,scale,nsview,nswindow,resize,Macos,Scale,Nsview,Nswindow,Resize,当用户在MacOSX中调整NSWindow元素的大小时,我正在考虑制作一个具有固定比率的窗口 我最初试过: - (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize { NSSize windowSize = frameSize; windowSize.width = windowSize.height*1.6; return windowSize; } 除此之外,只有当用户从底部或角

当用户在MacOSX中调整NSWindow元素的大小时,我正在考虑制作一个具有固定比率的窗口

我最初试过:

- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize
{
    NSSize windowSize = frameSize;
    windowSize.width = windowSize.height*1.6;

    return windowSize;
}
除此之外,只有当用户从底部或角落拖动窗口,而不是从侧面拖动窗口时,它才起作用

于是我又看了一眼,发现如下:

[_window setAspectRatio:NSMakeSize(1.6, 1)];
(我将其放入ApplicationIDFinishLaunching:)

这看起来像是要做的工作,但当你去调整窗口的大小,它会跳转最初,然后工作良好

而且,当窗口放大时,我的图形接缝看起来很模糊,甚至认为它们的质量比窗口大小大

基本上,我希望如果有人对一个新的MacOSX开发者在改变窗口大小方面有什么建议和窍门。对于iOS,我从来不用担心这个问题,我想在重新设计应用程序UI以适应更大的屏幕之前解决这个问题


谢谢

你说它跳;您在IB中是否正确设置了初始纵横比?您可以这样做吗?我在哪里可以找到它,因为我在NSWindow的属性中看不到它。是的,它在Size Inspector(右侧窗格的第5个选项卡)中。我是盲人,但我在这里看不到“纵横比”属性。(另外,我把纵横比改为0.75)。你在IB中设置的是内容矩形。不包括窗口框架(实际上是标题栏)。这将对应于由
-setContentAspectRatio:
维护的纵横比。也就是说,如果您将内容大小设置为在IB中具有特定的比率,并希望在运行时保持该比率,请使用
-setContentAspectRatio:
。另一方面,如果希望保持帧的纵横比,则可以使用
-setAspectRatio:
,但需要确保指定稍微不同的content rect,以便帧以所需的纵横比开始。