web-dev-qa-db-fra.com

L'animation de transition ne fonctionne pas dans SwiftUI

J'essaie de créer une animation de transition vraiment simple qui montre/cache un message au centre de l'écran en appuyant sur un bouton:

struct ContentView: View {
    @State private var showMessage = false

    var body: some View {
        ZStack {
            Color.yellow

            VStack {
                Spacer()
                Button(action: {
                    withAnimation(.easeOut(duration: 3)) {
                        self.showMessage.toggle()
                    }
                }) {
                    Text("SHOW MESSAGE")
                }
            }

            if showMessage {
                Text("HELLO WORLD!")
                    .transition(.opacity)
            }
        }
    }
}

Selon la documentation de l'animation .transition(.opacity)

Une transition du transparent à l'opaque lors de l'insertion et de l'opaque au transparent lors du retrait.

le message doit apparaître en fondu lorsque la propriété d'état showMessage devient vrai et disparaître lorsqu'il devient faux. Ce n'est pas vrai dans mon cas. Le message apparaît avec une animation de fondu, mais il se cache sans aucune animation. Des idées?

EDIT: Voir le résultat dans le gif ci-dessous tiré du simulateur.

enter image description here

16
superpuccio

Je pense que c'est un problème avec la toile. Je jouais avec les transitions ce matin et même si elles ne fonctionnent pas sur la toile, elles semblent fonctionner dans le simulateur. Essayez ça. J'ai signalé le bogue à Apple.

0
テッド