web-dev-qa-db-fra.com

UICollectionView: ajoute un espace entre l'en-tête et les éléments

Je veux ajouter un peu d'espacement entre mon en-tête et les éléments réels, qui ressemblent actuellement à ceci:

 screenshot1

func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
    // Create header
    switch kind{
        case UICollectionElementKindSectionHeader:
            let headerView = iconCollectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "customIconHeaderView", forIndexPath: indexPath) as! CustonIconHeaderView
            headerView.setUp() //add whatever into the view
            return headerView
        default:
            assert(false, "Unexpected element kind")
    }

}
16
Liumx31

En gros, vous parlez d’ajouter une marge supérieure à la section de la vue collection, pour cela vous définiriez encart supérieur pour la section. Pour le faire dans le code, implémentez insetForSectionAtIndex:

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

Si vous ne souhaitez pas implémenter la insetForSectionAtIndex, vous pouvez également faire quelque chose comme ceci avec une méthode appropriée, par exemple. viewDidLoad:

let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
layout.sectionInset = UIEdgeInsets(top: 10.0, left: 1.0, bottom: 1.0, right: 1.0)

Dans Interface Builder, sélectionnez la vue de collection et modifiez la valeur de Supports de section -> Haut comme indiqué dans l'image ci-dessous:

 enter image description here

NOTE: Ceci ne fonctionne que si vous utilisez Flow Layout.

23
ishaq