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

标签 cocoa user-interface constants

在编写 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/

相关文章:

cocoa - 如何计算(无需搜索)适合矩形的字体大小?

Python GUI登录程序

android - 在 Android 中使用 Instrumentation 进行 GUI 测试

c - C语言函数参数中关键字 'const'的好处

java - 是否有类似 C 的方法从 Java 中的枚举中获取项目编号?

objective-c - 辅助功能 API : AXWebArea children elements (or HTML source)

swift - 在 NSTableView 中使用第一列拖动图像

objective-c - 如何使用 Storyboard 将对象从 AppDelegate 传递到 WindowController?

java - 具有粘性标题和合适文本的表格

c++ - 原始指针隐式转换为常量指针,需要与用户类型相同