为 UICollectionViewFlowLayout 设置 minimumLineSpacing 没有效果,必须使用 insetForSectionAtIndex 函数?
Setting minimumLineSpacing for UICollectionViewFlowLayout has no effect, must use insetForSectionAtIndex function?
目标是定义 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
所以谁能解释为什么这段代码不起作用?
根据 Apple 文档
The flow layout uses the value in minimumLineSpacing property to set the spacing between lines in a section.
所以不会设置section之间的间距,是为了设置section内rows/columns之间的space。如果你想在不实现委托方法的情况下实现部分之间的间距,你可以使用 sectionInset
属性 of UICollectionViewFlowLayout
.
万一有人想知道如何只为一个部分做这件事:
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)
}
目标是定义 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
所以谁能解释为什么这段代码不起作用?
根据 Apple 文档
The flow layout uses the value in minimumLineSpacing property to set the spacing between lines in a section.
所以不会设置section之间的间距,是为了设置section内rows/columns之间的space。如果你想在不实现委托方法的情况下实现部分之间的间距,你可以使用 sectionInset
属性 of UICollectionViewFlowLayout
.
万一有人想知道如何只为一个部分做这件事:
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)
}