← Retour au blog

Configurations de contenu de liste par défaut en Swift

Construire une liste avec une collection view se résume à deux objets de configuration qui travaillent ensemble : l'un décide de l'allure générale de la section, l'autre décide de ce que contient chaque rangée. On les confond facilement parce que les deux ont « configuration » dans leur nom, alors il vaut la peine de les distinguer avant de regarder les préréglages.

  • UICollectionLayoutListConfiguration(appearance:) définit la sectionplain, grouped, insetGrouped ou sidebar. C'est la réponse côté collection view à UITableView.Style, avec sidebar ajouté pour les interfaces de type liste source.
  • UIListContentConfiguration définit la cellule — ses préréglages (.cell(), .subtitleCell(), .valueCell(), .accompaniedSidebarCell(), et .header() / .footer() pour les vues supplémentaires) décident où se placent le texte, le texte secondaire et l'image. Vous partez généralement de cell.defaultContentConfiguration(), qui vous rend le préréglage correspondant à l'apparence actuelle.

Assemblage d'une liste avec une collection view : une list configuration (appearance : plain, grouped, insetGrouped, sidebar) alimente une list section, qui alimente un compositional layout, qui pilote la collection view

Le câblage est court :

// 1. The section appearance
let config = UICollectionLayoutListConfiguration(appearance: .insetGrouped)
let layout = UICollectionViewCompositionalLayout.list(using: config)

// 2. The cell content, inside a cell registration
let registration = UICollectionView.CellRegistration<UICollectionViewListCell, Item> { cell, _, item in
    var content = UIListContentConfiguration.valueCell()   // or .cell(), .subtitleCell(), .sidebarCell()…
    content.text = item.title
    content.secondaryText = item.detail
    cell.contentConfiguration = content
}

Les captures d'écran ci-dessous montrent les préréglages de content-configuration par défaut — cell, subtitleCell, valueCell, et les variantes header/footer — rendus dans chaque apparence, pour que vous puissiez voir comment les mêmes préréglages changent selon le style de section.

Apparence plain ↴

configuration de contenu de liste par défaut Swift utilisant l'apparence plain en mode sombre configuration de contenu de liste par défaut Swift utilisant l'apparence plain en mode clair

Des lignes qui s'étendent de bord à bord, avec des en-têtes de section épinglés au défilement — la liste de tous les jours. Les préréglages ici (cell, subtitleCell, valueCell, plainHeader, plainFooter) sont ceux vers lesquels vous vous tournerez le plus.

Apparence grouped ↴

configuration de contenu de liste par défaut Swift utilisant l'apparence grouped en mode sombre configuration de contenu de liste par défaut Swift utilisant l'apparence grouped en mode clair

Des rangées pleine largeur regroupées en sections espacées, avec des en-têtes qui défilent avec le contenu — le regroupement classique de style réglages.

Apparence insetGrouped ↴

configuration de contenu de liste par défaut Swift utilisant l'apparence insetgrouped en mode sombre configuration de contenu de liste par défaut Swift utilisant l'apparence insetgrouped en mode clair

grouped avec les rangées ramenées dans des cartes arrondies en retrait des bords — l'allure moderne des Réglages, et une bonne valeur par défaut pour les formulaires.

Apparence sidebar ↴

configuration de contenu de liste par défaut Swift utilisant l'apparence sidebar en mode sombre configuration de contenu de liste par défaut Swift utilisant l'apparence sidebar en mode clair

L'apparence pour les listes sources et les barres latérales de navigation — pensez à la barre latérale de Fichiers ou de Notes sur iPad : des sections repliables et les préréglages sidebarCell / sidebarHeader, qui sont plus serrés et plus légers que leurs équivalents plain.

Dépôt source utilisé pour générer les fenêtres des images ci-dessus.