解决降低 UITableViewCell 高度时的约束冲突
Resolve constraint conflicts when decreasing height of UITableViewCell
我实现了一个自定义 UITableViewCell
,它有一个 UISlider
,在单元格 contentView
的左右两侧有两个 UIVimageView
。我已经为这些元素设置了自动布局约束。 UISlider
对 contentView
具有顶部和底部垂直间距约束,并为图像设置了前导和尾随。这些图像还具有 contentView
的顶部和底部垂直间距限制。这很好用,但我需要能够在某个时间点 'remove' 这些单元格,我通过将 UITableViewCell
的高度更改为 0 来实现。这很好用 - 没有外观问题,即使在再次扩展细胞之后。唯一的问题是当我折叠单元格时,自动布局问题被记录到控制台:
Unable to simultaneously satisfy constraints.
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170489010 UITableViewCellContentView:0x155eadd80.bottomMargin == UISlider:0x155eac820.bottom>
如何解决?
为了解决这个问题,我只是将断开的约束从等于关系更改为小于或等于关系。
当您将 tableViewCell
的高度设置为 0 时约束中断的原因如下:您的顶部和底部偏移约束大于 0。
如果单元格的总高度为0且这些约束为正,则意味着progressView
和imagesViews
的高度需要为负才能满足它们,这是无效的。因此,约束崩溃。
另一个解决方案是为您的视图使用对齐垂直中心约束,并带有一些偏移量以适合您的设计。在这种情况下,当单元格的高度为 0 时,约束将不再崩溃。
我实现了一个自定义 UITableViewCell
,它有一个 UISlider
,在单元格 contentView
的左右两侧有两个 UIVimageView
。我已经为这些元素设置了自动布局约束。 UISlider
对 contentView
具有顶部和底部垂直间距约束,并为图像设置了前导和尾随。这些图像还具有 contentView
的顶部和底部垂直间距限制。这很好用,但我需要能够在某个时间点 'remove' 这些单元格,我通过将 UITableViewCell
的高度更改为 0 来实现。这很好用 - 没有外观问题,即使在再次扩展细胞之后。唯一的问题是当我折叠单元格时,自动布局问题被记录到控制台:
Unable to simultaneously satisfy constraints.
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x170489010 UITableViewCellContentView:0x155eadd80.bottomMargin == UISlider:0x155eac820.bottom>
如何解决?
为了解决这个问题,我只是将断开的约束从等于关系更改为小于或等于关系。
当您将 tableViewCell
的高度设置为 0 时约束中断的原因如下:您的顶部和底部偏移约束大于 0。
如果单元格的总高度为0且这些约束为正,则意味着progressView
和imagesViews
的高度需要为负才能满足它们,这是无效的。因此,约束崩溃。
另一个解决方案是为您的视图使用对齐垂直中心约束,并带有一些偏移量以适合您的设计。在这种情况下,当单元格的高度为 0 时,约束将不再崩溃。