我如何获得2列collectionview

问题描述

您只是想知道为什么即使单元格的大小已经很小,我的集合视图仍仍显示1列。

func collectionView(_ collectionView: UICollectionView,layout collectionViewLayout: UICollectionViewLayout,sizeforItemAt indexPath: IndexPath) -> CGSize {
        let flowayout = collectionViewLayout as? UICollectionViewFlowLayout
        let space: CGFloat = (flowayout?.minimumInteritemSpacing ?? 0.0) + (flowayout?.sectionInset.left ?? 0.0) + (flowayout?.sectionInset.right ?? 0.0)
        let size:CGFloat = (collectionView.frame.size.width - space) / 2.0
        return CGSize(width: size,height: size)
    }

这是我的委托代码

这是collectionview故事板上的插入值

enter image description here

这是我运行它时的结果。

enter image description here

任何人都可以帮助我。我只想像此屏幕截图

enter image description here

那样有2列

解决方法

由于单元格的宽度和高度恒定,因此可以为布局设置一次ItemSize。使用委托来计算每个单元格可能不同的大小。

let layout = UICollectionViewFlowLayout()
let screenWidth = collectionView.bounds.width
let interItemSpacing = CGFloat(10)
let size = (screenWidth - interItemSpacing) / 2
layout.minimumInteritemSpacing = interItemSpacing
layout.itemSize = CGSize(width: size,height: size)
collectionView.collectionViewLayout = layout