【发布时间】:2019-10-18 14:33:27
【问题描述】:
我正在使用
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 400, height: 600)
}
指定我的CollectionView 的单元格大小。它工作正常,但只要我在单元格的ContentView 内向我的UILabel 添加宽度约束(UILabel.width == ContentView.width),单元格的宽度就会缩小到UILabel 的固有宽度。
我正在使用UICollectionViewDelegateFlowLayout 和水平滚动。
如何强制ContentView 坚持我指定的单元格大小并让子视图遵循自动布局约束?
【问题讨论】:
-
如果单元格宽度为 400,则减去 uilabel 两侧的填充并直接设置,而不是仅添加左右约束
-
我的单元格大小实际上是根据屏幕大小计算的,所以不能按照您的方式进行。
-
但是你写 return CGSize(width: 400, height: 600) 这意味着你所有的单元格大小应该是这样的。
-
是的,单元格应该是 400x600,但是当我在 UILabel 上添加大小限制时不是这样。
-
如果单元格大小是动态的,则有两个,首先您需要获取该标签的 intrinsicContentSize ,第二个是编写您的 flowLayout 并从此方法返回相应的大小
标签: swift uicollectionview autolayout uicollectionviewflowlayout