情况 我想在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
任何帮助都非常感谢,谢谢!
答案 0 :(得分:1)
在现代可可应用程序中,您将使用 NSLayoutConstraint 来实现表格视图单元格的动态高度。棘手的部分是获取文本的高度,您可以设置约束的高度。这可以通过使用 NSTextView 而不是NSTextField并向布局管理器询问当前高度来完成。
NSRect usedRect = [[textView layoutManager] usedRectForTextContainer:[self textContainer]];
float newHeight = usedRect.size.height;
几年前,我在目标c应用程序中使用了此方法,因此,如果您还有其他问题,请告诉我。