具有可变行高和自定义单元格的macOS可可TableView

时间:2018-07-01 19:31:21

标签: xcode macos cocoa tableview swift4

情况 我想在macOS Cocoa应用程序中创建一个News-Article表。 (见下图) 每个单元由两个标签组成。一个用于标题,另一个用于主要内容。

问题 现在新闻主体的长度和整个TableView的宽度是可变的。我希望每个行/单元格的高度都可变,具体取决于其中标签的大小。

我们尝试过的事情 我们尝试了以下方法: 我们有一个 表格视图

 -> TableColumn
  -> Custom View
   -> LabelHeader
   -> LabelBody

TableView的RowSizeStyle属性设置为“自动”

单元格中填充了一个自定义类。基本上,我们尝试实现此StackOverflow解决方案:Link to Solution->对我们不起作用。

(还有更多我们无法运行的解决方案)

问题 谁能为这个问题提供有效的教程或解决方案?还是至少有希望的方法?

PS 我在macOS 10.13.5上使用XCode 9.4.1和Swift 4

任何帮助都非常感谢,谢谢!

img

1 个答案:

答案 0 :(得分:1)

在现代可可应用程序中,您将使用 NSLayoutConstraint 来实现表格视图单元格的动态高度。棘手的部分是获取文本的高度,您可以设置约束的高度。这可以通过使用 NSTextView 而不是NSTextField并向布局管理器询问当前高度来完成。

NSRect usedRect = [[textView layoutManager] usedRectForTextContainer:[self textContainer]];
float newHeight = usedRect.size.height;

几年前,我在目标c应用程序中使用了此方法,因此,如果您还有其他问题,请告诉我。