Configurations de contenu de liste par défaut en Swift
2022-12-11
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 section —plain,grouped,insetGroupedousidebar. C'est la réponse côté collection view àUITableView.Style, avecsidebarajouté pour les interfaces de type liste source.UIListContentConfigurationdé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 decell.defaultContentConfiguration(), qui vous rend le préréglage correspondant à l'apparence actuelle.

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 ↴
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 ↴
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 ↴
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 ↴
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.