Middle
¿Qué es matchedGeometryEffect y cómo se usa en SwiftUI?
sobes.tech AI
Respuesta de la IA
matchedGeometryEffect - es un modificador en SwiftUI que permite animar suavemente el cambio de tamaño y posición de una vista al cambiar entre diferentes estados o jerarquías de vistas. Sincroniza la geometría (tamaño y posición) de las vistas en diferentes partes de la jerarquía, creando un efecto de "coincidencia".
Uso:
-
Definición de
idy espacio de animación:- Asignar un
idúnico a todas las vistas que deben estar sincronizadas, usando el modificadormatchedGeometryEffect. - Especificar
namespace(espacio de nombres de la animación).namespaceconecta las vistas que deben animarse juntas. Normalmente, se usa la anotación@Namespace private var namespace.
- Asignar un
-
Aplicación a las vistas:
- Aplicar
matchedGeometryEffecta cada vista que participa en la animación, indicando el mismoidynamespace. - Cambiar la visibilidad o posición de las vistas, por ejemplo, usando condiciones
if/elseo modificando el estado que afecta la disposición. SwiftUI anima automáticamente la transición.
- Aplicar
struct ContentView: View {
@Namespace private var animationNamespace // Declaración del espacio de nombres
@State private var isExpanded = false
var body: some View {
VStack {
if isExpanded {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Aplicación con id y namespace
.frame(width: 300, height: 200)
} else {
RoundedRectangle(cornerRadius: 10)
.fill(Color.red)
.matchedGeometryEffect(id: "myShape", in: animationNamespace) // Aplicación con el mismo id y namespace
.frame(width: 50, height: 50)
}
Button("Toggle Size") {
withAnimation { // Uso de withAnimation para transición suave
isExpanded.toggle()
}
}
}
}
}
Puntos clave:
- Mismo
idynamespacepara vistas relacionadas. - Los cambios deben ocurrir dentro del bloque de animación (por ejemplo, con
withAnimation). - Permite crear transiciones complejas entre diferentes estados de disposición.
- Puede usarse con diversos modificadores que afectan tamaño y posición (
frame,padding,offset, etc.).
matchedGeometryEffect simplifica mucho la creación de animaciones complejas de transformación de vistas en comparación con calcular y animar manualmente los parámetros del marco.