为UICollectionViewFlowLayout设置minimumLineSpacing无效,必须使用insetForSectionAtIndex函数吗?

时间:2016-08-27 22:36:57

标签: ios uicollectionview uicollectionviewlayout

目标是为UICollectionView定义节之间的间距。

但是,使用UICollectionViewFlowLayout属性设置minimumLineSpacing如下:

   // Init <collectionView>
    collectionView.alwaysBounceVertical = true
    collectionView.contentInset = UIEdgeInsets(top: CollectionViewTopPadding, left: 0, bottom: CollectionViewBottomPadding, right: 0)
    let flowLayout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
    flowLayout.minimumLineSpacing = 5

唯一可行的方法是使用insetForSectionAtIndex,如下所示:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
    return UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
}

有关SO集minimumLineSpacing的其他示例,那么有人可以解释为什么此代码无效吗?

2 个答案:

答案 0 :(得分:1)

根据Apple文档

  

流布局使用minimumLineSpacing属性中的值来设置节中行之间的间距。

因此,它不会在各部分之间设置间距,而是用于在部分内的行/列之间设置空间。如果您想在不实现委托方法的情况下实现节之间的间距,则可以使用sectionInset的{​​{1}}属性。

答案 1 :(得分:0)

有人想知道如何只为一个部分做这件事:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {

    if section == 0{

       return UIEdgeInsetsMake(0, 0, 10, 0)
    }

    return UIEdgeInsetsMake(0, 0, 0, 0)
}