Fiche 03.04 — Cards et containers réutilisables en SwiftUI
Objectif
Comprendre comment créer des blocs visuels réutilisables comme des cards, containers, sections et encadrés de contenu.
1. L’idée à comprendre
Dans une app SwiftUI, beaucoup d’écrans sont composés de blocs :
- card de profil ;
- card d’article ;
- card de statistique ;
- section de réglages ;
- bloc d’information ;
- encadré d’erreur ;
- container avec titre.
Au lieu de répéter partout :
Tu peux créer des composants ou des modifiers réutilisables.
2. Card simple
Utilisation :
3. Card avec contenu personnalisable
Pour rendre une card très réutilisable, tu peux utiliser @ViewBuilder.
Utilisation :
L’avantage : AppCard gère le style, mais le contenu reste libre.
4. Card avec titre intégré
Utilisation :
5. Card cliquable
Une card peut être cliquable en utilisant Button.
Utilisation :
6. Card avec image
Utilisation :
7. Créer un ViewModifier de card
Si tu veux appliquer le même style à beaucoup de vues, tu peux créer un ViewModifier.
Extension :
Utilisation :
8. Section réutilisable
Utilisation :
9. Où ranger ces composants ?
Pour un projet structuré :
Si une card est spécifique à une feature :
10. Preview
11. Points à connaître
Préfère un composant si le contenu a une logique spécifique
Exemple :
C’est mieux qu’une card générique si l’affichage est vraiment propre aux articles.
Préfère un modifier si tu veux seulement réutiliser un style
Exemple :
C’est utile quand le contenu varie beaucoup, mais le style reste le même.
Évite les styles dupliqués partout
Si tu répètes plusieurs fois :
c’est souvent le signe qu’il faut créer une card ou un modifier.
Résumé
À retenir :
- une card est un container visuel réutilisable ;
@ViewBuilderpermet de créer une card avec contenu libre ;- une card peut être statique ou cliquable ;
- un
ViewModifierest pratique pour réutiliser seulement un style ; - une section réutilisable peut organiser plusieurs cards ;
- range les containers partagés dans
Shared/Components; - crée une card spécifique si le contenu appartient à une feature précise.