ele*_*119 6 cocoa objective-c nstableview
基本上,我有一个带有1列的NSTableView,我在每行插入长字符串.但是,并非所有的字符串都很长,所以我希望每行的高度根据字符串的长度而有所不同.
我已经发现我需要询问它的宽度是多少,然后询问字符串如果柱子宽那么会占用多少行,然后决定NSCell的"高"程度.但是我到底该怎么做呢?我得到了以下的柱宽:
[[[tableView tableColumns] objectAtIndex:0] width];
但我无法弄清楚如何询问NSString将占用多少空间.或者,也许,我应该采取更好的方式来做这件事?
在此先感谢您的帮助.
Jos*_*zzi 10
创建一个NSTextFieldCell实例并匹配其字体/大小/等.到列的数据单元格.要求它-cellSizeForBounds:
传递一个具有较大高度(FLT_MAX?)的列所需宽度的矩形.结果应该是NSSize,您可以使用它的高度.
如果您有多个多行文本列会变得更加棘手,因为您需要考虑该行中的所有单元格,将最大值作为行高.如果您希望平均有很多行,您可能希望缓存此工作,根据需要进行更新,然后在调用行高度委托方法时简单地引用它.
代码按照上面的答案......
NSString *string = [[_tableViewDataSourceArray objectAtIndex:rowIndex]
valueForKey:@"StringToDisplay"];
NSTableColumn *tableColoumn = [aTableView
tableColumnWithIdentifier:@"TableColumnIdentifier"];
if (tableColoumn)
{
NSCell *dataCell = [tableColoumn dataCell];
[dataCell setWraps:YES];
[dataCell setStringValue:string];
NSRect myRect = NSMakeRect(0, 0, [tableColoumn width], CGFLOAT_MAX);
heightOfRow = [dataCell cellSizeForBounds:myRect].height;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4666 次 |
最近记录: |