【问题标题】:macOS cocoa TableView with variable Row-Height and custom cells具有可变行高和自定义单元格的 macOS 可可表视图
【发布时间】:2025-11-22 15:35:02
【问题描述】:

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

问题 现在新闻正文的长度和整个 TableView 的宽度是可变的。我想根据其中标签的大小在每个行/单元格上设置可变高度。

我们尝试了什么 我们尝试了以下方法: 我们有一个 表格视图

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

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

单元格填充有自定义类。基本上我们试图实现这个 * 解决方案:Link to Solution -> 这对我们不起作用。

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

问题 任何人都可以为这个问题提供一个工作教程或解决方案吗?或者至少是一种有前途的方法?

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

任何帮助很高兴,谢谢!

【问题讨论】:

    标签: xcode macos cocoa tableview swift4


    【解决方案1】:

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

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

    几年前我在一个客观的 c 应用程序中使用了它,所以如果您还有其他问题,请告诉我。

    【讨论】:

    • 非常感谢您的回答!我会尝试你的建议,可能会带着问题回来。
    • 谢谢马克!在您的帮助和这篇 * 帖子的帮助下,我们成功了:link
    最近更新 更多