基本上,我有一个带有 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/