适用于Mac应用程序的窗口大小



我是使用Cocoa开发Mac应用程序的新手。我弄不清楚窗户/视图的尺寸应该是多少。就像在iOS应用程序中一样,我们有适合小型iPod和最新iPod的尺寸。但是如何在Cocoa应用程序中设置大小。

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

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

在OS X下调整显示窗口的大小时,需要考虑以下几点。

首先是显示区域的大小。你可以使用

NSRect frame = [[NSScreen mainScreen] frame];

但这有点简单,因为用户可能正在显示Dock,而且几乎总是显示菜单栏。因此,确定桌面最大显示区域的更好方法是:

NSRect frame = [[NSScreen mainScreen] visibleFrame];

它尊重菜单栏和Dock。

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

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

- (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultFrame:(NSRect)newFrame

这是您确定窗框的"标准"位置和尺寸的地方。当窗口被"缩小"到所谓的"标准状态"(相对于用户制作的大小,即"用户状态")时,窗口会调用它。换句话说,它是最适合你的窗口内容的矩形,但要记住矩形描述了你可以显示它的"安全"区域。不幸的是,我不能告诉你如何对它进行编码,因为它完全取决于你在窗口内显示的内容。

你可以看到,"正确"的定义与iOS中的完全不同。在你的努力中向你致以最良好的祝愿。

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

你必须设计你的窗户,使所有的物体都能放进去。基于此,您可以设置最小大小和最大大小。考虑一下最小的屏幕分辨率大约是1200 x 700,因此你的最小尺寸不应该超过这个。

在自动布局之前,存在一种"springs&struts"的方法来定义对象如何通过调整大小的窗口框架来调整大小或定位。

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

许多有用的信息可以从OS X HIG中获取。

最新更新