Middle
Was ist matchedGeometryEffect und wie verwendet man es in SwiftUI?
sobes.tech KI
Antwort von AI
matchedGeometryEffect ist ein Modifier in SwiftUI, der es ermöglicht, sanft die Größen- und Positionsänderung einer Ansicht beim Übergang zwischen verschiedenen Zuständen oder Hierarchien zu animieren. Es synchronisiert die Geometrie (Größe und Position) der Ansichten in verschiedenen Teilen der Hierarchie und erzeugt einen "Matching"-Effekt.
Verwendung:
-
Definition von
idund Animationsraum:- Jedem zu synchronisierenden View eine eindeutige
idzuweisen, unter Verwendung des ModifiersmatchedGeometryEffect. - Einen
namespace(Namensraum der Animation) angeben. Dasnamespaceverbindet die Views, die zusammen animiert werden sollen. Üblicherweise wird die Annotation@Namespace private var namespaceverwendet.
- Jedem zu synchronisierenden View eine eindeutige
-
Anwendung auf Views:
matchedGeometryEffectauf jede View anwenden, die an der Animation beteiligt ist, und dabei dieselbeidundnamespaceangeben.- Sichtbarkeit oder Position der Views ändern, z.B. durch
if/else-Bedingungen oder durch Ändern des Zustands, der das Layout beeinflusst. SwiftUI animiert den Übergang automatisch.
struct ContentView: View {
@Namespace private var animationNamespace // Deklaration des Namensraums
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Anwendung mit id und namespace
.frame(width: 300, height: 200)
} else {
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Anwendung mit demselben id und namespace
.frame(width: 50, height: 50)
}
Button("Toggle Size") {
withAnimation { // Verwendung von withAnimation für einen sanften Übergang
isExpanded.toggle()
}
}
}
}
}
Wichtige Punkte:
- Gleiche
idundnamespacefür korrespondierende Views. - Änderungen sollten innerhalb des Animationsblocks erfolgen (z.B. mit
withAnimation). - Ermöglicht die Erstellung komplexer Übergänge zwischen verschiedenen Layout-Zuständen.
- Kann mit verschiedenen Modifikatoren verwendet werden, die Größe und Position beeinflussen (
frame,padding,offsetusw.).
matchedGeometryEffect vereinfacht die Erstellung komplexer Transformationsanimationen von Views erheblich im Vergleich zur manuellen Berechnung und Animation der Rahmenparameter.