【发布时间】:2020-10-17 07:33:21
【问题描述】:
我有这个相当简单的 UITableViewCell。
它有一个Avatar 视图,其高度设置为34 磅,单元格contentView 的顶部和底部的垂直间距为10 磅。单元格本身设置为使用自动行高,这里我已经可以看到一个小问题:行高值设置为 54.5。
是的,当我检查 Avatar 视图时,它的高度为 34.5,尽管它要求高度为 34 磅,并且内容拥抱和抗压性都设置为 1000。
当我在 iPhone 11 Pro 模拟器上运行应用程序时,我在控制台中收到以下警告:
(
"<NSLayoutConstraint:0x6000030a39d0 Jetfly.Avatar:0x7fabbb8e1310.height == 34 (active)>",
"<NSLayoutConstraint:0x6000030a3f70 V:|-(10)-[Jetfly.Avatar:0x7fabbb8e1310] (active, names: '|':UITableViewCellContentView:0x7fabbb8e1ab0 )>",
"<NSLayoutConstraint:0x600003088d20 Jetfly.Avatar:0x7fabbb8e1310.centerY == UITableViewCellContentView:0x7fabbb8e1ab0.centerY (active)>",
"<NSLayoutConstraint:0x600003089ea0 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x7fabbb8e1ab0.height == 54.3333 (active)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x6000030a39d0 Jetfly.Avatar:0x7fabbb8e1310.height == 34 (active)>
当我检查视图层次结构时,我可以看到 Avatar 的高度为 34,33 点。
好的,所以它显然与分隔线有关,在 11 Pro 上是 0.33 点(它是 @3x 设备,使其成为一个像素)。我明白了。但是..如何添加不会导致这些警告的约束,更重要的是,不要更改我的 Avatar 视图的高度?
【问题讨论】:
-
内容拥抱和压缩应该永远为 1000。将它们恢复为默认值(我相信是 750 和 250)。一方面,你会与你的身高发生冲突。
-
它们最初处于默认状态,那是我最初注意到问题的时候。所以这绝对不是原因 - 而且他们应该永远达到 1000 也是不正确的。
-
好吧,你说你说的,我说我说的那个。
-
仅供参考,我确实将它们恢复为默认值,因为将它们设置为 1000 并不能解决任何问题。它也没有使情况变得更糟,也没有妨碍真正的修复(将垂直间距限制之一设置为 999)。所以我很好奇你为什么说他们会和身高发生冲突?您能指出解释这一点的文章或文档吗?
标签: ios uitableview autolayout ios-autolayout