CollectionView单元格间距

时间:2018-10-21 13:28:46

标签: ios swift collectionview

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

这是我关于单元格间距的旧代码(现在为什么idk不能正常工作..)

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型号。

1 个答案:

答案 0 :(得分:0)

要设置间距或要显示多少个单元格,请使用 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