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

时间:2020-06-26 16:35:06

标签: ios uitableview autolayout ios-autolayout

我有这个相当简单的UITableViewCell。

enter image description here

它有一个Avatar视图,其高度设置为34点,与单元格contentView的顶部和底部垂直间隔10点。单元格本身设置为使用自动行高,在这里我已经看到一个小问题:行高值设置为54.5。

enter image description here

是的,当我检查Avatar视图时,它的高度为34.5,即使它的要求约束是高度必须为34点,并且内容拥抱和抗压缩性都设置为1000。

enter image description here

当我在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视图的高度?

1 个答案:

答案 0 :(得分:1)

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