TLDR:我想实现
this question
(或任何其他相关方法)
NSOutlineView
.
A.
NSOutlineView(NS大纲视图)
比
NSTableView
因为由于父/子关系,某些单元格可能相对于其他单元格缩进。
我愿意使用任何方法,包括自动布局(如果可能)。我的观点很简单
NSTableCellView
只有
NSTextField
.
我需要能够在基于视图的视图中设置行的高度
NSOutlineView(NS大纲视图)
取决于该行的文本
NSText字段
.
我目前正在使用以下(简化)代码,它利用了
NSString+Geometics
要计算给定宽度的视图的近似高度,请执行以下操作:
- (CGFloat)outlineView:(NSOutlineView *)outlineView
heightOfRowByItem:(id)item
{
static NSTableCellView *cell;
if (!cell) {
cell = [self.outlineView makeViewWithIdentifier:@"Cell"
owner:self];
}
NSString *text = [item text];
float width = cell.textField.bounds.size.width;
#warning this is completely wrong due to different levels of indentation
float height = [text heightForWidth:width];
return height;
}
这段代码背后的想法是保留一个临时单元格,以便使用其默认边界属性。这适用于顶层行。
但是
NSOutlineView(NS大纲视图)
向右缩进。要计算
NSText字段
没错,我需要知道
NSText字段
在该压痕之后。
我如何获取这些信息?
我应该注意到不能打电话
[outlineView viewAtColumn:0
row:[outlineView rowForItem:item]
makeIfNecessary:YES]
从内部
outlineView:heightOfRowByItem:
,这意味着无法获取对当前单元格的引用。