微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UItableView automaticDimension 不适用于自定义 UITableViewCell

如何解决UItableView automaticDimension 不适用于自定义 UITableViewCell

我知道这是一个在这里被问到很多的问题,但我尝试了我找到的所有解决方案,但没有一个奏效

这是我自定义的 UITableViewCell 的内容

enter image description here

这是标签属性

Label properties

及其约束:

enter image description here

这是开关的约束

enter image description here

在控制器 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 的顶部和底部间距,并将其垂直居中在容器中,这应该可以解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。