Próbowałem zrobić proste zanikanie animacji na tekst, ale kiedy próbuję to zrobić w ten sposób, to nie działa. Nie ma gładkiego wzrostu i zmniejszenia krycia, po prostu skacze do pełnej i żadnej krycia.

struct Test: View {
    @State var showing = false
    
    var body: some View {
        VStack {
            Button("Toggle") {
                self.showing.toggle()
            }
            
            if showing {
                Text("Hello")
                    .transition(.opacity)
                    .animation(.easeInOut)
            }
        }
    }
}

Czy ktoś wie, dlaczego to nie działa zgodnie z przeznaczeniem? Spodziewałem się tego, że będziemy płynne zanikanie w przejściu, gdy tekst został wstawiony i usunięty z hierarchii widoku.

1
rayaantaneja 31 lipiec 2020, 10:44

1 odpowiedź

Najlepsza odpowiedź

Nie ma nikogo, kto ma animować, gdy showing jest false. Zamiast tego użyj następujących:

VStack {
    if showing {
        Text("Hello")
            .transition(.opacity)
    }
}.animation(.easeInOut)   // << here !!
1
Asperi 31 lipiec 2020, 07:47