ProjectionTransform

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))
    }

Otras formas de hacer efectos

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()
        }
    }