在编写 Cocoa 应用程序时,我以编程方式完成大部分用户界面布局。例如:
NSRect popUpFrame = NSMakeRect(10, 10, 100, kDefaultPopUpButtonHeight);
NSPopUpButton * popUp = [[NSPopUpButton alloc] initWithFrame:popUpFrame];
//...
我的问题是关于kDefaultPopUpButtonHeight
持续的。我目前维护一个充满此类常量的源文件,并手动填写适当的大小。我可以通过将新控件放入 Interface Builder 中的空白 View 中,然后检查其属性以查看 IB 为其提供的大小来确定正确的大小。
一定有更好的方法。是否可以在运行时访问这些值?理想情况下,我期望每个 NSControl
有一个类似的类方法: +(NSSize)defaultSize
,或者,对于像 NSButton
这样的控件根据所使用的特定按钮样式具有不同的默认大小,例如 +(NSSize)defaultSizeForButtonStyle:(NSButtonStyle)buttonStyle
.
Apple's Human Interface Guidelines包含有关控件布局和控件之间的间距的信息,但没有说明各个控件的正确大小。
最佳答案
我同意 Peter 的观点,并建议您使用 Interface Builder。但如果这不适合您的情况,可以通过以下一种方法找到大多数控件的最佳大小:
NSSize idealSize = [[control cell] cellSize];
如果您需要对大小进行更多控制,可以使用 -[NSCell cellSizeForBounds:] 方法。
此外,cellSize 确实为您提供了控件的最小尺寸,而不一定是最佳尺寸。例如,对于带有文本“OK”的 Cocoa aqua 样式按钮,它将返回比 HIG 建议的宽度更窄的宽度。出于您的目的,听起来您只对尺寸的固定高度部分感兴趣。 -[NSCell cellSize] 应该很好用。
关于cocoa - 有没有办法以编程方式确定 Apple 内置控件的正确尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056079/