Middle
Qu'est-ce que matchedGeometryEffect et comment l'utiliser dans SwiftUI?
sobes.tech IA
Réponse de l'IA
matchedGeometryEffect est un modificateur dans SwiftUI qui permet d'animer en douceur le changement de taille et de position d'une vue lors de la transition entre différents états ou hiérarchies de vues. Il synchronise la géométrie (taille et position) des vues dans différentes parties de la hiérarchie, créant un effet de "correspondance".
Utilisation :
-
Définition de l'
idet de l'espace d'animation :- Assigner un
idunique à toutes les vues qui doivent être synchronisées, en utilisant le modificateurmatchedGeometryEffect. - Spécifier un
namespace(espace de noms de l'animation). Lenamespacerelie les vues qui doivent être animées ensemble. En général, on utilise l'annotation@Namespace private var namespace.
- Assigner un
-
Application aux vues :
- Appliquer
matchedGeometryEffectà chaque vue participant à l'animation, en indiquant le mêmeidetnamespace. - Modifier la visibilité ou la position des vues, par exemple en utilisant des conditions
if/elseou en changeant l'état qui influence la disposition. SwiftUI anime automatiquement la transition.
- Appliquer
struct ContentView: View {
@Namespace private var animationNamespace // Déclaration de l'espace de noms
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Application avec id et namespace
.frame(width: 300, height: 200)
} else {
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Application avec le même id et namespace
.frame(width: 50, height: 50)
}
Button("Toggle Size") {
withAnimation { // Utilisation de withAnimation pour une transition fluide
isExpanded.toggle()
}
}
}
}
}
Points clés :
- Même
idetnamespacepour les vues correspondantes. - Les changements doivent se produire à l'intérieur du bloc d'animation (par exemple, avec
withAnimation). - Permet de créer des transitions complexes entre différents états de disposition.
- Peut être utilisé avec divers modificateurs affectant la taille et la position (
frame,padding,offset, etc.).
matchedGeometryEffect facilite grandement la création d'animations de transformation complexes par rapport au calcul et à l'animation manuels des paramètres du cadre.