目标是为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
的其他示例,那么有人可以解释为什么此代码无效吗?
答案 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)
}