Middle
Ce este matchedGeometryEffect și cum îl folosești în SwiftUI?
sobes.tech AI
Răspuns de la AI
matchedGeometryEffect este un modifier în SwiftUI care permite animarea lină a schimbării dimensiunii și poziției unei vizualizări în timpul trecerii între diferite stări sau ierarhii de vizualizări. Sincronizează geometria (dimensiunea și poziția) vizualizărilor în diferite părți ale ierarhiei, creând un efect de "potrivire".
Utilizare:
-
Definirea
idși a spațiului de animație:- Atribuiți un
idunic tuturor vizualizărilor care trebuie sincronizate, folosind modificatorulmatchedGeometryEffect. - Specificați un
namespace(spațiu de nume).namespaceleagă vizualizările care trebuie animate împreună. De obicei, se folosește adnotarea@Namespace private var namespace.
- Atribuiți un
-
Aplicarea la vizualizări:
- Aplicați
matchedGeometryEffectfiecărei vizualizări care participă la animație, indicând acelașiidșinamespace. - Modificați vizibilitatea sau poziția vizualizărilor, de exemplu, folosind condiții
if/elsesau schimbând starea care afectează aspectul. SwiftUI animatează automat tranziția.
- Aplicați
struct ContentView: View {
@Namespace private var animationNamespace // Declararea spațiului de nume
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Aplicare cu id și namespace
.frame(width: 300, height: 200)
} else {
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Aplicare cu același id și namespace
.frame(width: 50, height: 50)
}
Button("Toggle Size") {
withAnimation { // Utilizarea withAnimation pentru tranziție lină
isExpanded.toggle()
}
}
}
}
}
Puncte cheie:
- Același
idșinamespacepentru vizualizări corespunzătoare. - Modificările trebuie să aibă loc în interiorul blocului de animație (de exemplu, cu
withAnimation). - Permite crearea de tranziții complexe între diferite stări de aspect.
- Poate fi utilizat cu diferiți modificatori care influențează dimensiunea și poziția (
frame,padding,offset, etc.).
matchedGeometryEffect simplifică foarte mult crearea animațiilor complexe de transformare a vizualizărilor comparativ cu calcularea și animarea manuală a parametrilor cadrului.