繁体   English   中英

CollectionView 单元格间距

[英]CollectionView Cell spacing

在使用我使用 collectionView 的旧方法后,我现在使用的是 collectionView 的 Apple 代码片段。 问题是我无法实现我的单元格间距代码,例如确切的 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM