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