Ce este matchedGeometryEffect și cum se folosește în SwiftUI?
sobes.tech AI
Răspuns de la AI
matchedGeometryEffect în SwiftUI este utilizat pentru a crea o animație de tranziție lină între două vizualizări care reprezintă același element vizual în diferite aspecte. Leagă geometria vizualizării într-o stare cu geometria unei alte vizualizări într-o altă stare, permițând SwiftUI să animeze automat modificările.
Se folosește aplicând modificatorul .matchedGeometryEffect pe ambele vizualizări care trebuie legate. Modificatorul acceptă trei parametri:
id: Identificator unic pentru a lega vizualizările.in: Spațiu de nume (Namespace) în care este înregistrat identificatorul. De obicei, creat cu@Namespace.properties: Set de proprietăți geometrice care trebuie animate (de exemplu,.position,.size,.frame).
Exemplu de utilizare:
struct ContentView: View {
@Namespace private var animation
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
Rectangle()
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animation)
.frame(width: 200, height: 200)
.onTapGesture {
withAnimation {
isExpanded.toggle()
}
}
} else {
Rectangle()
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animation)
.frame(width: 50, height: 50)
.onTapGesture {
withAnimation {
isExpanded.toggle()
}
}
}
}
}
}
În acest exemplu, .matchedGeometryEffect leagă două Rectangle cu același id ("myShape") și în același spațiu de nume (animation). Când isExpanded se schimbă, SwiftUI animează tranziția între cele două stări, creând un efect lin de schimbare a dimensiunii și poziției dreptunghiului.