Objective c Mac应用程序的窗口大小

Objective c Mac应用程序的窗口大小,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我不熟悉使用Cocoa开发Mac应用程序。我对窗口/视图的大小感到困惑。就像在iOS应用程序中一样,我们为小型iPod和最新iPod提供了合适的尺寸。但是如何在Cocoa应用程序中设置大小 我还想将部署目标设置为OS X 10.6,它不支持自动布局 那么,调整适合每个桌面的窗口大小的好方法是什么呢?不要太像为iOS设备编程。在OSX上,用户可以在屏幕上相邻显示多个窗口。他可能想这样做,这取决于你的应用程序的任务 你必须设计你的窗户,使所有的物体都能放进去。基于此,您可以设置最小大小和最大大小。考

我不熟悉使用Cocoa开发Mac应用程序。我对窗口/视图的大小感到困惑。就像在iOS应用程序中一样,我们为小型iPod和最新iPod提供了合适的尺寸。但是如何在Cocoa应用程序中设置大小

我还想将部署目标设置为OS X 10.6,它不支持自动布局


那么,调整适合每个桌面的窗口大小的好方法是什么呢?

不要太像为iOS设备编程。在OSX上,用户可以在屏幕上相邻显示多个窗口。他可能想这样做,这取决于你的应用程序的任务

你必须设计你的窗户,使所有的物体都能放进去。基于此,您可以设置最小大小和最大大小。考虑最小的屏幕分辨率是1200×700左右,因此你的最小尺寸不应该超过。 在autolayout之前,存在一种“springs&struts”方法来定义对象如何通过调整大小的窗口框架调整大小或位置

我建议你开始在纸上或用图形工具来展示你的应用,然后看看需要多少空间。如果需要比最小分辨率更大的空间,则必须开始使用滚动视图、分割视图或类似视图,以使界面在不同的窗口大小下工作


可以从.< /p> 中得到很多有用的信息。当在OS x.< /p>下显示一个窗口时,有两件事需要考虑。 首先是显示区域的大小。你可以用

NSRect frame = [[NSScreen mainScreen] frame];
但这有点简单,因为用户可能正在显示Dock,而且几乎总是会显示菜单栏。因此,确定桌面最大显示面积的更好方法是:

NSRect frame = [[NSScreen mainScreen] visibleFrame];
它尊重菜单栏和停靠

正如其他人指出的,这个矩形很少是窗口的最理想尺寸。还要了解,这个矩形只是一个起点,因为您的用户可能有多个显示器,并且它们构成了窗口可能显示的总面积。但是当显示新窗口时,您总是从这个矩形开始。查看
NSScreen
的文档以确定这一点;上述方法将为您的理解提供一个跳板

我不知道您打算如何创建和使用窗口,但对于除最简单的应用程序以外的所有应用程序,您可能会使用NSWindowController的子类。如果是这样,它将是窗口的代理。因此,您需要在其中实现一个重要的窗口委托方法,它是:

- (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultFrame:(NSRect)newFrame
这是您确定窗口框架的“标准”位置和大小的地方。当窗口被“缩小”到所谓的“标准状态”(相对于用户的大小,称为“用户状态”)时,它被窗口调用。换句话说,它是最适合窗口内容的矩形,但要记住描述“安全”区域的矩形,您可以在其中显示它。不幸的是,我不能确切地告诉您如何编码它,因为它完全取决于您在窗口中显示的内容


你可以看到,“适当”的定义与iOS完全不同。向您的努力致以最良好的祝愿。

窗口大小和部署目标是两个不同的主题。