按钮的自动布局无效!
class SomeCell: UICollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
self.setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.setup()
}
func setup() {
self.contentView.translatesAutoresizingMaskIntoConstraints = false
}
}
答案 0 :(得分:0)
我在运行时查看了所有约束,并在translatesAutoresizingMaskIntoConstraints设置为false和true时进行了比较。
结果是当translatesAutoresizingMaskIntoConstraints设置为false时,单元格的内容视图未获得其高度和宽度自动布局约束。在您的情况下,这会导致ambiguous layout
至于为什么会这样,我猜测UICollectionFlowLayout的实现依赖于该属性被设置为true,但我找不到任何关于此的文档。
答案 1 :(得分:-1)
您需要通过覆盖方法collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
为代理中的单元格提供大小
https://developer.apple.com/documentation/uikit/uicollectionviewdelegateflowlayout/1617708-collectionview
UICollectionView高度基于精确的帧计算,因此您的约束会遇到麻烦。你可以在单元格中设置约束,但是你需要为单元格提供一个大小,与UITableView不同。