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。我通常使用从最底部视图到内容视图底部的底部约束。
我有这个相当简单的 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。我通常使用从最底部视图到内容视图底部的底部约束。