Fiche 04.01 — Animations et transitions essentielles
Objectif
Comprendre comment animer une interface SwiftUI sans complexifier le code. Le but est de savoir rendre une app plus fluide : apparition d’un message d’erreur, ouverture d’une section, changement d’état d’un bouton, affichage d’un loader ou disparition d’une vue.
1. L’idée à comprendre
En SwiftUI, l’interface est une conséquence de l’état. Donc une animation consiste souvent à changer une variable, puis à demander à SwiftUI d’animer la différence entre l’ancien état et le nouvel état.
Exemple :
Si isExpanded passe de false à true, SwiftUI peut animer la taille, l’opacité, la rotation, la position, etc.
2. Animation avec withAnimation
withAnimation est la manière la plus claire pour animer un changement d’état.
Ici, une seule variable contrôle l’état de la carte. Le withAnimation anime le changement.
3. Les animations courantes
SwiftUI fournit plusieurs animations simples :
En pratique :
.easeInOut: animation générale, naturelle ;.easeOut: bonne pour faire apparaître un élément ;.linear: vitesse constante, utile pour une progression ;.spring(): effet rebond, à utiliser avec modération.
4. Animation implicite avec .animation
Tu peux aussi attacher une animation à une valeur.
Le modifier .animation(..., value:) dit à SwiftUI : “anime les changements liés à cette valeur”.
Pour du code lisible, préfère souvent withAnimation quand l’action est explicite.
5. Transitions
Une transition est utilisée quand une vue apparaît ou disparaît avec un if.
Exemples utiles :
La transition ne fonctionne vraiment que si le changement d’état est animé :
6. Exemple réaliste : message d’erreur animé
C’est typiquement le genre d’animation utile dans une vraie app.
En UIKit (rappel)
En UIKit, tu animes impérativement : tu décris explicitement les valeurs de départ et d'arrivée dans un bloc d'animation.
Pour un layout animé, tu modifies les contraintes puis tu appelles layoutIfNeeded() dans le bloc :
Pour une transition (apparition/disparition, changement de contenu) : UIView.transition(with:duration:options:animations:) ou une CATransition.
La différence de mentalité : en UIKit tu pilotes l'animation pas à pas (quoi animer, vers quelle valeur). En SwiftUI tu changes l'état et tu laisses le framework interpoler la différence.
👉 En SwiftUI : ces blocs deviennent withAnimation { state.toggle() }, .animation(_:value:) et .transition(...), en déclaratif.
7. Points à connaître
N’anime pas tout. Une app trop animée peut sembler lente ou amateur.
Les animations doivent aider à comprendre l’interface : afficher un état, guider l’œil, rendre une transition moins brutale.
Évite les traitements lourds pendant une animation. L’animation doit accompagner un changement d’état, pas masquer une logique compliquée.
Résumé
withAnimationanime un changement d’état..animation(..., value:)attache une animation à une valeur..transitionanime l’apparition ou la disparition d’une vue.- Les animations utiles sont souvent simples : opacité, déplacement, scale, rotation.
- Une bonne animation rend l’interface plus claire, pas plus chargée.