所以我有一个collectionViewController,我正在尝试实现网格布局。我知道sizeForItemAt控制的大小,但无论我玩多少次,我都不能让它成为一个三通过三格,这让我很困惑。任何帮助是极大的赞赏。我只添加了sizeForItemAt方法来节省每个人的时间。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let width = (view.frame.width - 2)/3
return CGSize(width: width, height: width)
}
这就是我的VC目前的样子
答案 0 :(得分:1)
符合UICollectionViewDelegateFlowLayout
(文档here)
例如:
class YourClassName: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDelegate {
// ...
}
请注意,来自文档:
流布局对象需要集合视图的委托对象 采用这个协议。因此,在object上实现此协议 已分配到您的集合视图的委托属性。
所以在你的viewDidLoad
集合中:
collectionView.delegate = self
并实现以下来计算单元格大小:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
// Number of cells
let collectionViewWidth = collectionView.bounds.width/3.0
let collectionViewHeight = collectionViewWidth
return CGSize(width: collectionViewWidth, height: collectionViewHeight)
}