问题描述
我知道这是一个在这里被问到很多的问题,但我尝试了我找到的所有解决方案,但没有一个奏效
及其约束:
这是开关的约束
在控制器 viewDidLoad 中,我有:
tableView.rowHeight = UITableView.automaticDimension //scale height to content
tableView.estimatedRowHeight = 44
据我所知,应该足够了。
但结果是:
- 检查约束
- 将 tableView.reloadData() 添加到 viewDidLoad
- 使用“返回 UITableView.automaticDimension”覆盖 heightForRowAt
- 在 cellForRowAt 中返回单元格之前添加 cell.setNeedsUpdateConstraints() 和 cell.updateConstraintsIfNeeded() 结果总是一样的。 部分起作用的唯一事情是:
- 去除标签的底部约束
- 或者给 tableView.rowHeight 一个数值,如果内容改变,这显然不起作用。
那么我错过了什么?
解决方法
Switch
绑定到 cell.contentView
顶部和底部 8
和
Label
绑定到 cell.contentView
顶部和底部 8
Autolayout 试图兼顾两者,但布局在确定预期高度时存在问题。
尝试移除 Switch
的顶部和底部间距,并将其垂直居中在容器中,这应该可以解决问题。