我不确定我是否以最佳方式接近这一点。
(1)首先,我想要一个具有任意数量单元格的tableView,其动态单元格高度不同(基于来自Web服务器的内容,无法提前计算)。但是我希望tableView的高度只能增长到适合所有单元格的内容(不是更高或更短)。此表视图将不可滚动(它的父视图将是父级视图)。
(2)然后,我希望tableView嵌套在父UIView中。
我主要是(1)工作,虽然我不知道我的方法是最佳的还是hackish。但我绝对没有(2)工作:(
(下图)Turqoise视图是表View的父级。单元格(红色)和表格大小(白色)是正确的,但父视图比应该更短。
我的代码更改后,我遇到了相反的问题。父高度增长到大约正确的高度,但是tableView被砍掉了。
这是代码更改:
查看层次结构:
如果我没有尝试将tableView放在父UIView中,那么表"大小适合"恰到好处:
rte_eth_stats
完整的代码库位于:https://github.com/jayliew/UITableViewSizeToFitDynamicHeightCells/tree/master/TableViewFitContent
我不确定我需要知道什么,我不知道,但我怀疑它是否能完全理解视图的布局,AutoLayout如何发挥作用,以及viewController生命周期,如viewWillAppear,viewWillLayoutSubviews等(每个阶段如何影响视图的布局,有或没有AutoLayout)。我不是只想解决这个问题,而是更全面地了解架构,如果有人能指出我正确的方向,我会很感激。
答案 0 :(得分:1)
回答我自己的问题:
我学到的教训不是将AutoLayout与手动创建框架和将视图更改为使用这些框架混合。
我了解到我必须首先人工设置tableView到一个巨大的高度,例如1000,使动态单元格在桌面上“可见”。然后,我只能循环遍历所有这些单元格,获取帧高度,手动将它们全部添加,然后在tableView上设置AutoLayout高度约束的常量,使其等于所有单元格高度的总和。
此外,上述内容必须发生在viewDidAppear()
中就是这样!示例代码:https://github.com/jayliew/UITableViewSizeToFitDynamicHeightCells
感谢Github上的@ddustin