2016-08-27 132 views
1

目标是为UICollectionView定义节之间的间距。为UICollectionViewFlowLayout设置minimumLineSpacing无效,必须使用insetForSectionAtIndex函数吗?

然而,设置UICollectionViewFlowLayoutminimumLineSpacing属性如下不起作用:

// 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) 
} 

上的其他实例设置minimumLineSpacing所以任何人都可以解释为什么这段代码不工作?

回答

1

根据苹果文档

流布局使用在minimumLineSpacing属性的值以设置线之间的间隔中的部分。

因此,它不会在各部分之间设置间距,它用于在部分内的行/列之间设置间距。如果完全想在不使用代理方法的情况下实现各部分之间的间距,则可以使用UICollectionViewFlowLayoutsectionInset属性。

+0

啊有趣,又提醒阅读的,而不是你所看到的在SO源文件 – Crashalot

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) 
} 
相关问题