Fiche 01.02 — Comprendre une View SwiftUI
Objectif
Comprendre ce qu’est une View en SwiftUI, à quoi sert body, ce que veut dire some View, et pourquoi une vue SwiftUI est reconstruite quand son état change.
1. L’idée à comprendre
En SwiftUI, une vue est une description de l’interface.
Tu ne dis pas manuellement :
Tu décris plutôt l’interface que tu veux obtenir :
SwiftUI s’occupe ensuite de créer, afficher et mettre à jour l’interface.
Une View SwiftUI est donc une structure qui décrit ce que l’utilisateur doit voir à un instant donné.
2. Code minimal
3. View
View est le protocole de base pour créer une interface en SwiftUI.
Quand tu écris :
Tu dis que WelcomeView est une vue SwiftUI.
Une vue SwiftUI peut représenter :
- un écran complet ;
- une partie d’écran ;
- un bouton custom ;
- une cellule de liste ;
- un composant réutilisable ;
- une vue temporaire comme un loader ou un message d’erreur.
Exemple d’écran complet :
Exemple de petit composant :
4. body
body est la propriété qui décrit le contenu visuel de ta vue.
Exemple :
Ici, le body dit que ProfileHeaderView affiche :
- une image système ;
- un texte ;
- le tout dans une
VStack.
Tu peux retenir :
5. some View
Quand tu écris :
Cela veut dire :
“Cette propriété retourne un type qui respecte le protocole
View, mais je ne donne pas son type exact.”
Pourquoi ?
Parce qu’une vue SwiftUI réelle peut avoir un type très long.
Par exemple :
n’est pas juste un Text. Chaque modifier transforme le type de la vue.
Donc SwiftUI utilise some View pour cacher ce type complexe.
Tu peux retenir simplement :
6. Une View est généralement une struct
En SwiftUI, les vues sont presque toujours des struct.
Exemple :
Pourquoi des struct ?
Parce que SwiftUI reconstruit souvent les vues.
Une vue SwiftUI est légère. Elle ne représente pas forcément un objet écran vivant comme un UIViewController.
Elle décrit simplement l’interface attendue.
7. La recomposition d’une vue
SwiftUI met à jour l’interface quand une donnée utilisée par la vue change.
Exemple :
Quand tu appuies sur le bouton :
Important : SwiftUI ne recrée pas forcément toute l’interface visible de zéro. Mais toi, dans ton code, tu dois penser de manière déclarative :
8. Exemple réaliste : écran avec plusieurs états
Une vue SwiftUI change selon l’état actuel.
Ici, le body dépend de isLoading.
Si isLoading == true, SwiftUI affiche un ProgressView.
Si isLoading == false, SwiftUI affiche un Text.
9. Découper une vue
Quand une vue devient trop grosse, tu peux la découper en sous-vues.
Au lieu de faire :
Tu peux faire :
C’est plus lisible et plus facile à maintenir.
10. Points à connaître
Une View ne doit pas contenir trop de logique
Une vue SwiftUI doit surtout décrire l’interface.
Elle peut contenir un peu de logique d’affichage simple, par exemple :
Mais elle ne devrait pas contenir toute la logique métier de l’app.
Pour une vraie app, cette logique ira plutôt dans :
- un
ViewModel; - un service ;
- un repository ;
- un use case dans une architecture plus avancée.
Le body peut être relu souvent
Évite de lancer directement des actions lourdes dans le body.
Pas idéal :
Préférable :
Le body doit rester une description de l’interface, pas un endroit pour faire des traitements lourds.
Résumé
À retenir :
- une vue SwiftUI respecte le protocole
View; - une vue SwiftUI est généralement une
struct; bodydécrit ce que la vue affiche ;some Viewsignifie “je retourne une vue sans écrire son type exact” ;- SwiftUI relit le
bodyquand un état utilisé par la vue change ; - une vue doit surtout décrire l’interface ;
- les traitements lourds et la logique métier doivent être sortis de la vue.