在编写 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 的人机界面指南 http://developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html有关于控件布局和间距的信息between控件,但它没有说明各个控件的正确大小。
我同意 Peter 的观点,并建议您使用 Interface Builder。但如果这不适合您的情况,可以通过以下一种方法找到大多数控件的最佳大小:
NSSize idealSize = [[control cell] cellSize];
如果您需要对大小进行更多控制,可以使用 -[NSCell cellSizeForBounds:] 方法。
此外,cellSize 实际上为您提供了控件的最小尺寸,而不一定是最佳尺寸。例如,对于带有文本“OK”的 Cocoa aqua 样式按钮,它将返回比 HIG 建议的宽度更窄的宽度。出于您的目的,听起来您只对尺寸的固定高度部分感兴趣。 -[NSCell cellSize] 应该很好用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)