CollectionView中的网格布局?

时间:2018-04-03 23:49:41

标签: ios swift uicollectionview

所以我有一个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目前的样子

enter image description here

1 个答案:

答案 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)
}