如何在使用 tableViews 自调整单元格时在运行时更改表格视图单元格高度?

Posted

技术标签:

【中文标题】如何在使用 tableViews 自调整单元格时在运行时更改表格视图单元格高度?【英文标题】:How to change table view cell height at runtime while using tableViews self sizing cells? 【发布时间】:2017-12-16 14:00:54 【问题描述】:

我有主 tableView MX 个单元格,每个 x 有子 tableView S N 个单元格。 我使用 estimatedRowHeightUITableViewAutomaticDimension 来创建动态单元格height。 问题是,如何强制 M 表格视图重新布局并更改 x 单元格的高度以适应 S 表格视图的内容大小在运行时?

here is an image of what i want to implement

【问题讨论】:

你在为 tableView M 使用 UITableViewAutomaticDimension 吗? 是的,也适用于 tableView S 两个表格视图中的单元格是否完全(并且正确)“链接”了约束以允许自动布局为您调整单元格的大小?您是否为两张表提供了大量的tableView.estimatedRowHeight 而不仅仅是1 @Mia 是的,问题是当我尝试更改 S tableView 的高度约束时。我需要 X 单元格在运行时适应 S 的新高度。 如果所有约束都无缝链接在一起(最顶层的子视图到单元格,最底层到单元格的底部,没有常量),运行时更改根本不成问题当您调用layoutIfNeeded() 更新约束更改时。你能发布你的基本设置吗? 【参考方案1】:

我认为您需要手动计算表格视图 M 中每个单元格(每个 X 单元格)的高度。首先找到您的 tableView S 在每个 X 单元格中的高度。

计算 TableView S 的高度:

高度 = 单元格数 * 每个单元格的高度(N)

X 单元格的高度 = 高度

注意:在这里你提到你也在使用 UITableViewAutomaticDimension 为 tableView S。因此,您需要根据其中的内容找到每个单元格 N 的高度。 E,g:如果要在单元格 N 中加载字符串,只需根据字符串长度计算标签高度,然后通过添加适当的间距高度和标签高度来提供单元格 N 高度。

谢谢。

【讨论】:

【参考方案2】:

您必须手动计算表格视图 M 中每个单元格的高度。在此之前找出您的 tableView S 的高度与 N 个单元格的高度。

    获取S的tableview.contentSize.height 将此 contentSize 赋予 M 的单元格 X。 现在获取 M 的 tableview.contentSize.height

制作两个单独的方法来通过它们的单元格获取 tableview 的高度,并将它们写入 tableview 的“cellAtRow”委托中。 (制作自动布局的高度约束的iboutlet)。只需在运行时需要更改时重新加载表。

【讨论】:

以上是关于如何在使用 tableViews 自调整单元格时在运行时更改表格视图单元格高度?的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView 对齐在初始显示时在 tableview 单元格中关闭,但之后没有

如何在自定义滑动(而不是滑动删除)单元格(滑动到邮件/短信)中点击一个单元格时删除在其他 TableView 单元格中添加的子视图

如何在 TableView 中调整自定义单元格的大小?

重用自定义 tableView 单元格时重复显示相同的子视图(Swift 4.1)

如何在 swift ios 中单击该单元格时在 UICollectionViewcell 中显示图像?

为 iOS 选择 TableView 单元格时视图已更改