UITableViewCell自动布局约束问题由于分隔线高度

UITableViewCell auto layout constraint problems due to separator line height

我有这个相当简单的 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 视图的高度?

将一个垂直轴约束的优先级降低到999。我通常使用从最底部视图到内容视图底部的底部约束。