objective-c - 基于 NSStrings 的 NSTableView 行高

标签 objective-c cocoa nstableview

基本上,我有一个带有 1 个列的 NSTableView,并且我在每一行中插入长字符串。然而,并不是所有的字符串都很长,所以我希望每行的高度根据字符串的长度而不同。

我发现我需要询问列的宽度,然后询问字符串如果列那么宽它将占用多少行,然后决定 NSCell 的“高度” .但是我到底该怎么做呢?我从以下位置获得了列宽:

[[[tableView tableColumns] objectAtIndex:0] width];

但我不知道如何询问 NSString 它将占用多少空间。或者,我应该有更好的方法来执行此操作?

提前感谢您的帮助。

最佳答案

创建一个 NSTextFieldCell实例并匹配其字体/大小/等。到您列的数据单元格。向它询问 -cellSizeForBounds:,传入列所需宽度的矩形,高度较大(FLT_MAX?)。结果应该是一个 NSSize,您可以使用其高度。

如果您有多个多行文本列,事情就会变得更加棘手,因为您需要考虑该行中的所有单元格,将最大的单元格作为行高。如果您预计平均有很多行,您可能希望缓存这项工作,根据需要更新它,然后在调用行高委托(delegate)方法时简单地引用它。

关于objective-c - 基于 NSStrings 的 NSTableView 行高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3212279/

相关文章:

iphone - 解析 NSURL 查询属性

ios - 获取 UILabel 中第一行的字符串

macos - 在 XCode 中寻找 MKMapView 缩放按钮

objective-c - 我应该把 [pool drain] 放在 @finally 子句中吗?

objective-c - 以编程方式绑定(bind) NSTableView 列

ios - replacescene 在我的游戏 cocos2d ios 中停止背景音乐

ios - iPad 横向显示纵向框架和边界

macos - Mac OS X 上的 Word 文档 (.docx) 编辑器

macos - 创建分组 TableView

cocoa - 在单个 NSTableView 中显示多个实体的数据(核心数据)