解决降低 UITableViewCell 高度时的约束冲突

Resolve constraint conflicts when decreasing height of UITableViewCell

我实现了一个自定义 UITableViewCell,它有一个 UISlider,在单元格 contentView 的左右两侧有两个 UIVimageView。我已经为这些元素设置了自动布局约束。 UISlidercontentView 具有顶部和底部垂直间距约束,并为图像设置了前导和尾随。这些图像还具有 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且这些约束为正,则意味着progressViewimagesViews的高度需要为负才能满足它们,这是无效的。因此,约束崩溃。

另一个解决方案是为您的视图使用对齐垂直中心约束,并带有一些偏移量以适合您的设计。在这种情况下,当单元格的高度为 0 时,约束将不再崩溃。