CollectionView 单元格间距

CollectionView Cell spacing

在使用我以前使用 collectionView 的方式后,我现在使用 Apple 代码片段来获取 collectionView。问题是我无法实现我的单元格间距代码,例如确切的 3 个单元格应该排成一行。

这是我的单元格间距的旧代码(现在它不起作用,我知道为什么..)

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let width = collectionView.frame.width / 3 - 1 // number of cells in a row. now it's 3 

    return CGSize(width: width, height: width)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 1.0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    return 1.0
}

我怎样才能让一切看起来比现在更好?因为现在连续的单元格数取决于 iPhone 模型。此外,间距也取决于 iPhone 型号。

为了设置间距或要显示的单元格数量,您需要做的就是使用 UICollectionViewDelegateFlowLayout.

这是完美的代码:

extension CollectionViewController: UICollectionViewDelegateFlowLayout {


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let width = collectionView.frame.width / 3 - 1

    return CGSize(width: width, height: width)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 1.0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    return 1.0
}

此外,在 viewDidLoad 函数中写入 collectionView?.delegate = self