Mac应用程序的窗口大小

时间:2014-02-18 10:40:15

标签: objective-c macos cocoa

我是使用Cocoa进行Mac应用程序开发的新手。我对窗口/视图大小应该是什么感到困惑。就像在iOS应用程序中一样,我们有适合小型iPod和最新iPod的尺寸。但是如何在Cocoa应用程序中设置大小。

另外,我想将部署目标设置为OS X 10.6,它不支持AutoLayout。

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

2 个答案:

答案 0 :(得分:5)

在OS X下为显示器调整窗口大小时,需要考虑几件事。

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

NSRect frame = [[NSScreen mainScreen] frame];

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

NSRect frame = [[NSScreen mainScreen] visibleFrame];

尊重菜单栏和Dock。

正如其他人所指出的,这个矩形很少是窗户最理想的尺寸。也明白这个矩形只是一个起点,因为您的用户可能有多个显示,并且它们对可能显示窗口的总区域有贡献。但是当显示一个新窗口时,你总是从这个矩形开始。查看NSScreen的文档以确定这一点;上述方法将为您的理解提供跳板。

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

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

您可以在此处确定窗口框架的“标准”位置和大小。当窗口被缩小到“标准状态”时(相对于用户使用它的大小,即“用户状态”),窗口调用它。换句话说,它是最适合窗口内容的矩形,但请记住描述“安全”区域的矩形,您可以在其中显示它。不幸的是,我无法确切地告诉你如何编码,因为它完全取决于你在窗口中显示的内容。

然后,您可以看到“正确”的定义与iOS中的定义完全不同。祝你工作顺利。

答案 1 :(得分:1)

不要过多考虑为iOS设备编程。在OS X上,用户可以在屏幕上相邻显示多个窗口。他可能希望这样做,具体取决于您的应用程序的任务。

你将不得不设计你的窗户,以便所有物体都适合里面。在此基础上,您可以设置最小尺寸和最大尺寸。考虑最小屏幕分辨率大约为1200 x 700,因此您的最小尺寸不应超过该值。

在autolayout之前,存在一种“弹簧和支柱”方式来定义对象如何通过调整大小的窗口框架来调整大小或位置。

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

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

相关问题