Es un tipo de estructura que nos permitirá aplicar una transformación 3D a nuestras vistas. Este tipo de transformación espacial brinda gran posibilidad de control sobre la animación.
Normalmente cuando hacemos un ProjectionTransform
se hacen utilizando
// Wordle example shake animation
// <https://www.objc.io/blog/2019/10/01/swiftui-shake-animation/>
var amount: CGFloat = 10
var shakesPerUnit = 3
var animatableData: CGFloat
func effectValue(size: CGSize) -> ProjectionTransform {
ProjectionTransform(CGAffineTransform(translationX:
amount * sin(animatableData * .pi * CGFloat(shakesPerUnit)),y: 0))
}
En general no es necesario recurrir al ProjectionTransform
para realizar animaciones y transformar la vista. La mayoría de las veces suele utilizarse para ello modificadores como
// Wordle rotation 3D
@State var contentRotation = 0.0
Vista() {
//contenido
}
.rotation3DEffect(.degrees(contentRotation), axis: (x: 1, y: 0, z: 0))
// Cuando se llama al método el valor del contentRotation cambia
func flipFlashcard() {
let animationTime = 0.5
withAnimation(Animation.linear(duration: 0.001).delay(animationTime / 2)) {
contentRotation += -180
flipped.toggle()
}
}