集合视图中的多行标签在重用后会中断

时间:2017-04-07 11:53:35

标签: ios swift autolayout uicollectionviewcell

我有一个带有多个UI元素的自定义UICollectionViewCell,使用代码中的AutoLayout设置进行布局。

在较大的设备(iPhone 6及更高版本)上,一切都按预期工作。

然而,在较小的设备上,多线UILabel会中断,但在重用之后才会中断(似乎)。

在初始显示时,第一个单元格如下所示:

Initial display of cell

将单元格滚动到屏幕上并重新打开后,它看起来像这样:

Second display of cell

这些是在标签上设置的约束:

    descriptionLabel.centerXAnchor.constraint(equalTo: firstButton.centerXAnchor),
    descriptionLabel.leadingAnchor.constraint(equalTo: otherLabel.leadingAnchor),
    descriptionLabel.topAnchor.constraint(equalTo: firstButton.bottomAnchor, constant: 15),
    secondButton.topAnchor.constraint(greaterThanOrEqualTo: descriptionLabel.bottomAnchor, constant: 20),

我觉得这与greaterThanOrEqualTo约束有关,但如果我用普通的旧equalTo约束替换它,布局就会变得狂野,标签缩小到只适合一行。

1 个答案:

答案 0 :(得分:2)

我在UICollectionView遇到了类似的问题,我在preferredMaxLayoutWidth属性和widthAnchor

中找到了解决方案
productNameLabel.widthAnchor.constraint(equalTo: self.widthAnchor, multiplier: 0.6)
productNameLabel.preferredMaxLayoutWidth = self.frame.size.width * 0.6

它应该解决问题。