一尘不染

UITableView自动调整大小的行约束在iPhone 6Plus上神秘地打破

swift

我有一个自定义UITableViewCell,其中包含缩略图和一堆文本。行高配置为使用以下方式自动计算

tableView.estimatedRowHeight = 129;
tableView.rowHeight = UITableViewAutomaticDimension

行高应精确计算为 138 点。在iPhone 5上,一切看起来都很不错。但是,在iPhone 6
Plus上,对于具有以下日志的随机行,自动行高度会间歇性地失败。

(
    "<NSLayoutConstraint:0x17009ddd0 V:|-(20)-[scoop.ThumbnailImage:0x124d2a5a0]   (Names: '|':UITableViewCellContentView:0x124e23200 )>",
    "<NSLayoutConstraint:0x17009de70 UITableViewCellContentView:0x124e23200.bottomMargin == scoop.ThumbnailImage:0x124d2a5a0.bottom + 20>",
    "<NSLayoutConstraint:0x17009e780 V:[scoop.ThumbnailImage:0x124d2a5a0(90)]>",
    "<NSLayoutConstraint:0x17009ef00 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x124e23200(138.333)]>"
)

日志的最后一行似乎说,由于某种原因,行高被计算为 138.333 而不是138
。我已经打了一段时间,但我无法弄清楚为什么会这样。有人可以帮忙吗?

更新: 这是我的表格视图单元格的样子。

细胞

更新
我无法从主存储库中获取代码,因为它是更大项目的一部分。但是我设法通过一个非常简单的理智的项目重现了这个问题。请在github上找到它。


阅读 210

收藏
2020-07-07

共1个答案

一尘不染

此警告告诉您约束中存在冲突。将高度限制的优先级降低为999,它将消失。在您的Github项目中对其进行了测试,并且效果很好。

在此处输入图片说明

2020-07-07