UItableView automaticDimension 不适用于自定义 UITableViewCell
UItableView automaticDimension not working on custom UITableViewCell
我知道这是一个在这里被问得很多的问题,但我尝试了我找到的所有解决方案并且 none 其中有效
这是我自定义的 UITableViewCell 的内容
这是标签的属性
及其限制条件:
这是开关的限制条件
在控制器 viewDidLoad 中,我有:
tableView.rowHeight = UITableView.automaticDimension //scale height to content
tableView.estimatedRowHeight = 44
据我所知,应该足够了。
但结果是:
如您所见,只显示了标签的第一行。
就像我之前说的,我尝试了在这里找到的多种解决方案,例如:
- 检查约束
- 将 tableView.reloadData() 添加到 viewDidLoad
- 用“return UITableView.automaticDimension”覆盖 heightForRowAt“
- 在 returning cellForRowAt 中的单元格之前添加 cell.setNeedsUpdateConstraints() 和 cell.updateConstraintsIfNeeded()
结果总是一样的。
唯一部分起作用的是:
- 移除标签的底部约束
- 或者给tableView.rowHeight一个数值,如果内容发生变化,显然是行不通的
所以我错过了什么?
Switch
绑定到 cell.contentView
顶部和底部 8
和
Label
绑定到 cell.contentView
顶部和底部 8
Autolayout 试图兼顾两者,但布局在确定预期高度时存在问题。
尝试删除 Switch
的顶部和底部间距并使其在容器中垂直居中,这应该可以解决问题。
我知道这是一个在这里被问得很多的问题,但我尝试了我找到的所有解决方案并且 none 其中有效
这是我自定义的 UITableViewCell 的内容
这是标签的属性
及其限制条件:
这是开关的限制条件
在控制器 viewDidLoad 中,我有:
tableView.rowHeight = UITableView.automaticDimension //scale height to content
tableView.estimatedRowHeight = 44
据我所知,应该足够了。
但结果是:
如您所见,只显示了标签的第一行。
就像我之前说的,我尝试了在这里找到的多种解决方案,例如:
- 检查约束
- 将 tableView.reloadData() 添加到 viewDidLoad
- 用“return UITableView.automaticDimension”覆盖 heightForRowAt“
- 在 returning cellForRowAt 中的单元格之前添加 cell.setNeedsUpdateConstraints() 和 cell.updateConstraintsIfNeeded() 结果总是一样的。 唯一部分起作用的是:
- 移除标签的底部约束
- 或者给tableView.rowHeight一个数值,如果内容发生变化,显然是行不通的
所以我错过了什么?
Switch
绑定到 cell.contentView
顶部和底部 8
和
Label
绑定到 cell.contentView
顶部和底部 8
Autolayout 试图兼顾两者,但布局在确定预期高度时存在问题。
尝试删除 Switch
的顶部和底部间距并使其在容器中垂直居中,这应该可以解决问题。