UItableView automaticDimension 不适用于自定义 UITableViewCell
Posted
技术标签:
【中文标题】UItableView automaticDimension 不适用于自定义 UITableViewCell【英文标题】:UItableView automaticDimension not working on custom UITableViewCell 【发布时间】:2021-06-01 15:59:28 【问题描述】:我知道这是一个在这里被问了很多的问题,但是我尝试了所有找到的解决方案,但都没有奏效
这是我的自定义 UITableViewCell 的内容
这是标签的属性
及其约束:
这是开关的约束
在控制器 viewDidLoad 中,我有:
tableView.rowHeight = UITableView.automaticDimension //scale height to content
tableView.estimatedRowHeight = 44
据我所知,应该足够了。
但结果是:
如您所见,只显示标签的第一行。
就像我之前说的,我尝试了多种解决方案,例如:
检查约束 将 tableView.reloadData() 添加到 viewDidLoad 用“return UITableView.automaticDimension”覆盖 heightForRowAt 在 cellForRowAt 返回单元格之前添加 cell.setNeedsUpdateConstraints() 和 cell.updateConstraintsIfNeeded() 结果总是一样的。 唯一部分起作用的是: 移除标签的底部约束 或者给tableView.rowHeight一个数值,如果内容发生变化,这显然是行不通的。那么我错过了什么?
【问题讨论】:
【参考方案1】:Switch
绑定到 cell.contentView
上下 8 倍
与
Label
绑定到 cell.contentView
上下 8 倍
Autolayout 试图同时兼顾两者,但布局在确定预期高度时存在问题。
尝试删除 Switch
的顶部和底部间距并将其垂直居中放置在容器中,这应该可以解决问题。
【讨论】:
以上是关于UItableView automaticDimension 不适用于自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章
UItableview 单元格的动态高度与 UItableview 单元格内的 UItableview
水平 UITableView 中的垂直 UITableView
如何与重叠显示的 UITableView 交互另一个 UITableView