Sud*_*ari 2 macos cocoa objective-c
我是使用Cocoa进行Mac应用程序开发的新手.我对窗口/视图大小应该是什么感到困惑.就像在iOS应用程序中一样,我们有适合小型iPod和最新iPod的尺寸.但是如何在Cocoa应用程序中设置大小.
另外,我想将部署目标设置为OS X 10.6,它不支持AutoLayout.
那么什么是调整适合每个桌面的窗口的好方法呢?
在OS X下为显示器调整窗口大小时,需要考虑几件事情.
首先,显示区域的大小.你可以用
NSRect frame = [[NSScreen mainScreen] frame];
Run Code Online (Sandbox Code Playgroud)
但这有点简单,因为用户可能正在显示Dock,并且几乎总是显示菜单栏.因此,确定桌面最大显示区域的更好方法是:
NSRect frame = [[NSScreen mainScreen] visibleFrame];
Run Code Online (Sandbox Code Playgroud)
它尊重菜单栏和Dock.
正如其他人所指出的那样,这个矩形很少是窗户最理想的尺寸.也明白这个矩形只是一个起点,因为您的用户可能有多个显示,并且它们对可能显示窗口的总区域有贡献.但是当显示一个新窗口时,你总是从这个矩形开始.查看NSScreen文档来确定这一点; 上述方法将为您的理解提供跳板.
我不知道你打算如何创建和使用你的窗口,但除了最简单的应用程序之外,你可能会使用NSWindowController的子类.如果是这样,它将成为您窗口的代表.因此,您需要在其中实现一个重要的窗口委托方法,它是这样的:
- (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultFrame:(NSRect)newFrame
Run Code Online (Sandbox Code Playgroud)
您可以在此处确定窗口框架的"标准"位置和大小.当窗口被缩小到"标准状态"时(相对于用户使用它的大小,即"用户状态"),窗口调用它.换句话说,它是最适合窗口内容的矩形,但请记住描述"安全"区域的矩形,您可以在其中显示它.不幸的是,我无法确切地告诉你如何编码,因为它完全取决于你在窗口中显示的内容.
然后,您可以看到"正确"的定义与iOS中的定义完全不同.祝你工作愉快.
| 归档时间: |
|
| 查看次数: |
2383 次 |
| 最近记录: |