小编tan*_*009的帖子

NSTableCellView 动态高度与 NSTextField 多行自动布局

我有一个基于视图的 NSTableView 和 NSTableCellView 子类,它们具有启用自动换行的多行 NSTextField。现在我希望我的表格根据文本字段内容具有动态行高。自动布局也已启用。

文本字段的约束如图所示:

约束

Tableview heightForRow 方法代码:

- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row {

    VerseTableCell *cell = [self getTableCellForRow:row];
    [cell.txtSuraDetail invalidateIntrinsicContentSize];
    [cell invalidateIntrinsicContentSize];
    [cell setTranslatesAutoresizingMaskIntoConstraints:YES];

    [cell layout];
    [cell setNeedsDisplay:YES];
    [cell setNeedsUpdateConstraints:YES];
    [cell setNeedsLayout:YES];
    [cell layoutSubtreeIfNeeded];

    NSRect size = cell.txtSuraDetail.frame;

    CGFloat height = (size.size.height) + 30;

    return height;
   }
Run Code Online (Sandbox Code Playgroud)

单元格布局方法:

- (void)layout {
    [super layout];
    self.txtSuraDetail.preferredMaxLayoutWidth = self.txtSuraDetail.frame.size.width;
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下链接,但没有任何帮助,文本字段的文本仍在剪切。

macos cocoa nstableview autolayout nstablecellview

6
推荐指数
0
解决办法
1745
查看次数

标签 统计

autolayout ×1

cocoa ×1

macos ×1

nstablecellview ×1

nstableview ×1