我处于这样一种情况,我希望UITableViewCells具有可变数量的子视图,具体取决于数据。显然,这会导致每个细胞的动态高度。我研究并在Using Auto Layout in UITableView for dynamic cell layouts & variable row heights发现了一篇非常好的帖子。 github上的Sample项目显示了如何计算具有固定数量子视图的单元格的高度,即两个UILabel,其中一个标签是多行的。我理解,但在我的情况下,这些标签的数量会有所不同。
我的第一种方法是我可以在Cell的contentView中添加UIView,然后在它们可用时在该视图中添加所有UILabel。 (可能在计算heightForRowAtIndexPath时)。然后在tableViewCell的子类的UpdateConstraints中添加所有必需的约束,并希望UIView将展开以获取其中所有UILabel的组合高度。但这似乎是这样做的。我知道UIView没有计算intrinsicContentSize。但是我们现在如何确保它需要它的子视图的大小。
我尝试的第二种方法是直接在单元格的内容视图中添加UILabel。这适用于某些标签,但对于某些标签来说它只是混乱。
我想我在这里遇到两个主要问题:
我应该何时创建单元格的动态子视图?
如何动态调整内部的UIView(不是UILabel) UITableViewCell基于它的subViews的intrinsicSize。
我正在使用@ https://github.com/smileyborg/TableViewCellWithAutoLayout
提供的@smileyborg代码答案 0 :(得分:4)
对于适用于iOS 8或更高版本的UITableViewCell的正确动态高度计算,以下关键点非常重要。
细胞设计要点:
满足这些要点后
从 heightForRowAtIndexPath 和 estimatedHeightForRowAtIndexPath 委托方法返回 UITabelViewAutomaticDimention , 希望,这有效!