我试图用UICollectionView将三个项目放在一行
extension DemoController : UICollectionViewDelegateFlowLayout {
//1
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
//2
let paddingSpace = sectionInsets.left * (itemsPerRow + 1)
let availableWidth = view.frame.width - paddingSpace
let widthPerItem = availableWidth / itemsPerRow
return CGSize(width: widthPerItem, height: widthPerItem)
}
//3
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
insetForSectionAt section: Int) -> UIEdgeInsets {
return sectionInsets
}
// 4
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return sectionInsets.left
}
}
我哪里做错了? 谢谢
高度约束和底部约束,宽度约束和前导约束如果同时使用,将会发生冲突。 不要使用不必要的限制。 如果您给出了宽度
,则不需要前导约束
;如果您给出了高度
,则不需要底部约束
在某些场景中,如果您需要同时使用它们,请对优先级或相等性进行一些更改
uilabel
具有自动调整大小属性,即它接受其内容的大小。 因此,如果您试图为所有四个方面提供约束,最好在情节提要的constraint属性中为前导
和top
以及尾随
和botto
提供greaterthanorequalto
的约束之间的关系。 下面是一个例子: