Magnification Gesture en SwiftUI en Español
MagnificationGesture en SwiftUI lo usamos para escalar una vista en SwiftUI. Para ello usamos el modificador scaleEffect, para poder modificar cuando un user escala la vista para hacerla más grande o más pequeña. Usamos el modificador .gesture y dentro de él instanciamos MagnificationGesture
Tabla de contenido
Hoy en SwiftBeta vamos a aprender a cómo ampliar vistas en SwiftUI. Vamos a ver lo que vimos con el TapGesture o el DragGesture, pero en este caso usaremos MagnificationGesture (y en este caso se utilizan dos dedos para escalar la vista).
MagnificationGesture en código
Lo primero de todo que vamos hacer es crear un proyecto de cero. Y crearemos un VStack con un Text dentro y unos cuántos modificadores, la vista quedaría de la siguiente manera:
Hasta aquí nada nuevo, ahora lo que vamos hacer es añadir un modificador llamado scaleEffect y este modificador espera un parámetro. Vamos a crear una propiedad @State llamada scale de tipo CGFloat.
A continuación, usamos el modificador .gesture y dentro de él creamos una instancia de MagnificationGesture, el código quedaría de la siguiente manera:
Si ahora nos vamos al canvas y le damos al Live Preview, podemos ver que al pulsar la tecla option encima de nuestra vista aparecen dos circulos, representando la posición de los dedos en un device real. Ahora si movemos el ratón (manteniendo la tecla option) vemos como nuestra vista se hace más pequeña o más grande dependiendo de la dirección en la que nos movamos.
Un pequeño cambio que podríamos hacer, es que al soltar nuestro gesto, hubiera una pequeña animación, podríamos hacer lo siguiente:
¿Queda bien verdad? solo hemos tenido que añadir el modificador onEnded y dentro de él hemos asignado a la propiedad scale el valor inicial, que era 1.0. Al asignale ese valor, lo hemos hecho dentro de withAnimation que es el que hace toda la magia por nosotros.
Conclusión
Hemos visto lo simple que es escalar nuestras vistas en SWIFTUI, solo hemos usado el modificador scaleEffect y una instancia MagnificationGesture.