使用UITableView.automaticDimension适配含3个标签的容器视图Cell问题
你遗漏了以下关键配置和约束检查点:
必须设置
estimatedRowHeight
UITableView的自动高度计算依赖预估行高作为初始布局参考,没有这个值的话,自动高度逻辑无法正常触发。你可以通过代码设置:tableView.estimatedRowHeight = 100 // 设一个符合你内容预估的数值即可,比如100或者在Storyboard/XIB中,选中TableView,在Attributes Inspector里将
Estimated Row Height设置为非0的值(默认是Automatic,也可以手动输入一个合理值)。检查标签的宽度约束是否明确
你的标签支持多行显示,但如果标签的宽度没有明确约束(比如没有设置左右与容器视图的间距,或者固定宽度),系统无法计算多行文本所需的高度,导致Cell高度无法正确更新。确保每个标签的左右方向都有明确的约束,让系统能确定文本的换行宽度。确认Cell的Row Height设置为Automatic
如果是在Storyboard/XIB中创建的Cell,要确保Cell的Row Height属性设置为Automatic,而不是固定数值。如果是纯代码创建的Cell,不需要额外设置,但要保证约束链完整。验证容器视图的垂直约束链完整性
虽然你描述了容器视图与Cell的上下约束,以及内部标签的垂直关系,但要确保整个垂直方向的约束是完整闭合的:从Cell的顶部 → 容器顶部(25) → Weekly plan标签顶部(16) → Weekly plan底部到Monthly plan顶部(10) → Monthly plan底部到Save about顶部(0) → Save about底部到容器底部(12) → 容器底部到Cell底部(12)。这条链必须没有断点,否则Auto Layout无法计算出容器和Cell的准确高度。
另外,再确认所有多行标签的numberOfLines属性已经设置为0,这是多行显示的必要条件。
内容的提问来源于stack exchange,提问作者Tulon

