Xcode 具有可变行高和自定义单元格的macOS cocoa TableView
形势 我想在macOS Cocoa应用程序中创建一个新闻文章表。(见下图) 每个单元格由两个标签组成。一个用于标题,一个用于主要内容 问题 现在,新闻主体的长度和整个TableView的宽度是可变的。我希望根据每行/单元格中标签的大小,在每行/单元格上设置一个可变高度 我们尝试过的 我们尝试了以下方法: 我们有一个 桌面视图Xcode 具有可变行高和自定义单元格的macOS cocoa TableView,xcode,macos,cocoa,tableview,swift4,Xcode,Macos,Cocoa,Tableview,Swift4,形势 我想在macOS Cocoa应用程序中创建一个新闻文章表。(见下图) 每个单元格由两个标签组成。一个用于标题,一个用于主要内容 问题 现在,新闻主体的长度和整个TableView的宽度是可变的。我希望根据每行/单元格中标签的大小,在每行/单元格上设置一个可变高度 我们尝试过的 我们尝试了以下方法: 我们有一个 桌面视图 -> TableColumn -> Custom View -> LabelHeader -> LabelBody TableV
-> TableColumn
-> Custom View
-> LabelHeader
-> LabelBody
TableView上的RowSizeStyle属性设置为“自动”
这些单元格由自定义类填充。基本上,我们试图实现这个StackOverflow解决方案:->这对我们来说不起作用
(还有更多我们无法运行的解决方案)
问题
有人能为这个问题提供一个实用的教程或解决方案吗?或者至少是一个有希望的方法
PS我在macOS 10.13.5上使用XCode 9.4.1和Swift 4
非常感谢您的帮助,谢谢
在现代cocoa应用程序中,可以使用NSLayoutConstraint实现表格视图单元格的动态高度。棘手的部分是获取可以设置约束高度的文本高度。这可以通过使用NSTextView而不是NSTextField并向布局管理器询问当前高度来完成
NSRect usedRect = [[textView layoutManager] usedRectForTextContainer:[self textContainer]];
float newHeight = usedRect.size.height;
几年前,我在objective c应用程序中使用了此选项,因此如果您还有其他问题,请告诉我 非常感谢您的回答!我会尝试你的建议,可能会带着问题回来。谢谢你,马克!通过您的帮助和这篇Stackoverflow文章,我们成功了: