2016-08-27 1 views
1

L'objectif est de définir l'espacement entre les sections pour un UICollectionView.La définition de minimumLineSpacing pour UICollectionViewFlowLayout n'a aucun effet, doit utiliser la fonction insetForSectionAtIndex?

Cependant, le réglage de la UICollectionViewFlowLayout comme suit avec la propriété minimumLineSpacing n'a pas d'effet:

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

La seule approche qui fonctionne est d'utiliser le insetForSectionAtIndex comme suit:

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

Autres exemples sur le SO définir minimumLineSpacing donc quelqu'un peut-il expliquer pourquoi ce code ne fonctionne pas?

Répondre

1

Selon documentation Apple

La mise en page de flux utilise la valeur de la propriété minimumLineSpacing pour définir l'espacement entre les lignes dans une section.

Ainsi, il ne définira pas l'espacement entre les sections, il est pour définir l'espace entre les lignes/colonnes dans la section. Si vous souhaitez obtenir l'espacement entre les sections sans implémenter la méthode de délégation, vous pouvez utiliser la propriété sectionInset de UICollectionViewFlowLayout.

+0

Ahh intéressant, encore un autre rappel à lire la documentation source au lieu de ce que vous voyez sur le SO – Crashalot

0

Incase quelqu'un se demande comment ne le faire pour une section:

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