Ios 添加约束后,具有UICollectionViewDelegateFlowLayout的UIcollectioncell不应用高度和宽度
我尝试使用UICollectionView将三个项目排成一行Ios 添加约束后,具有UICollectionViewDelegateFlowLayout的UIcollectioncell不应用高度和宽度,ios,swift,uicollectionview,uicollectionviewcell,Ios,Swift,Uicollectionview,Uicollectionviewcell,我尝试使用UICollectionView将三个项目排成一行 extension DemoController : UICollectionViewDelegateFlowLayout { //1 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout,
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具有自动调整大小的属性,即它采用内容的大小。因此,如果您试图为所有四个方面提供约束,那么最好在故事板上的约束属性中为
前导
和顶部
以及尾部
和底部
提供约束之间的关系。这里有一个例子:
从我的附加图像中可以看到,您必须将集合视图的估计大小设置为None,以便集合视图根据您定义的集合视图FlowLayout计算您的大小,否则它将根据UILabel的大小计算集合视图的大小。谢谢您的回答。当然,这与我的问题无关,但我还是尝试了你的解决方案,但它不起作用。