有没有办法以编程方式确定Apple内置控件的正确尺寸?

时间:2009-06-28 23:55:04

标签: cocoa user-interface constants

编写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包含有关控件布局和控件间距的信息,但它没有说明各个控件的正确尺寸。

1 个答案:

答案 0 :(得分:1)

我同意Peter的意见,并建议你使用Interface Builder。但如果在您的情况下这不合适,可以通过以下方法找到大多数控件的最佳尺寸:

NSSize idealSize = [[control cell] cellSize];

如果您需要更多控制大小调整,可以使用 - [NSCell cellSizeForBounds:]方法。

此外,cellSize确实为您提供了控件的最小尺寸,而不一定是最佳尺寸。例如,对于带有文本“OK”的Cocoa aqua样式按钮,它将返回比HIG推荐的更窄的宽度。出于您的目的,听起来您只对尺寸的固定高度部分感兴趣。 - [NSCell cellSize]应该运行良好。