2016-08-27 101 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) 
} 
相關問題