动态表视图高度
Posted
技术标签:
【中文标题】动态表视图高度【英文标题】:Dynamic table view height 【发布时间】:2015-08-20 15:38:21 【问题描述】:这个想法是根据几个控件的高度自动调整单元格的高度。如上图所示,我有 Top Label 和 Bottom 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 中的滚动表视图上发生变化