动态表视图高度

Posted

技术标签:

【中文标题】动态表视图高度【英文标题】:Dynamic table view height 【发布时间】:2015-08-20 15:38:21 【问题描述】:

这个想法是根据几个控件的高度自动调整单元格的高度。如上图所示,我有 Top LabelBottom Label。这两个标签可以根据文本长度有不同的高度。

关于故事板中的设置的几句话。

我将 2 个描述标签的行数设置为 0,以允许根据给定文本动态增加它们的高度。

对于 顶部标签,我有下一个限制:

对于 底部标签,我有下一个约束:

所以我说1000个绿色标签和底部标签之间的垂直间距每次都是一样的:

但如果没有这个间距单元格将不会拉伸高度。我怎样才能减少这个垂直间距?因为“1000绿色标签”和底部标签之间有很大的间距,以防顶部标签由于文本而具有很大的高度。

在我设置的-viewDidLoad方法中:

[self.theTableView setEstimatedRowHeight:145];
[self.theTableView setRowHeight:UITableViewAutomaticDimension];

有时它似乎很酷,但我不知道如何限制垂直间距:

http://www.appcoda.com/self-sizing-cells/

【问题讨论】:

This answer 将解决教程中提到的“错误”,他们建议reloadData @PetahChristian,重新加载数据对我不起作用 如果你设置了宽度,你就不需要使用reloadData了。如果单元格仍然没有正确布局,即使在滚动或重新加载数据之后,它也表明约束存在问题。你想要做的有点复杂。您有一个“左”部分和一个“右”部分,两者中较高的部分将确定单元格的实际高度。所以左右部分都必须有 >= 约束,所以如果另一边比它们高,它们可以扩展。 【参考方案1】:

将底部标签的顶部约束设置为 >= 11.5(或其最小间距应为的任何值)。

这将使单元格根据单元格中的其他内容调整垂直间距。

更新:

ios 9 中,这将更简单地由 UIStackView 处理。

水平堆栈视图将约束(并根据它们确定单元格高度)两个内部垂直堆栈视图。左侧垂直堆栈将处理图像、横幅和标签布局,右侧垂直堆栈将处理顶部标签、10000 和底部标签布局。您只需要 4 个约束(水平 stackView 将其约束到 contentView)。

【讨论】:

以上是关于动态表视图高度的主要内容,如果未能解决你的问题,请参考以下文章

如何在表视图中正确设置动态标题视图?

UITableview 单元格高度在 iOS 14.0 中的滚动表视图上发生变化

oracle 动态传入表名,怎么做? 高手指点

在 Flutter 的垂直列表中添加动态高度水平列表视图

使 CollectionView 和 TableView 高度动态化

动态改变 UITableViewCell 高度 - Swift 4