4

フォーム ビュー内で発生するアニメーションを制御できるようにするためのものではありませんか? ここに、問題を示すプレイグラウンドと、何が起こるかの gif があります。ご覧のとおり、2 番目のアニメーション ビューでのトランジションは完全に無視されます。再生時間も無視されるため、手動でビデオの速度を落とす必要がありました。

スケーリングのトランジションは本当に必要ありません。これは、何を入れてもアニメーションが同じであることを示すためです。それは期待されていますか、それともバグですか?それとも、まったく間違ったことをしているだけですか?

VStack が .move と .opacity の組み合わせを取得しているように見えるときに、VStack のアニメーションが単純な Text フィールドとは異なる方法で処理される理由も明確ではありません。

アニメーションデモ

import SwiftUI
import PlaygroundSupport


struct ContentView: View {

    @State var showGoodAnimation = false
    @State var showBadAnimation = false

    var body: some View {
        Form {
            Toggle(isOn: self.$showGoodAnimation.animation(.easeInOut(duration: 1))) {Text("Yay!")}
            if self.showGoodAnimation {
                Text("I animate beautifully.")
            }
            Toggle(isOn: self.$showBadAnimation.animation(.easeInOut(duration: 1))) {Text("Boo!")}
            if self.showBadAnimation {
                VStack {
                    Text("Hi.").padding()
                    Text("I'm a hot mess.").padding()
                }
                .frame(height: 250)
                .transition(.scale)
            }
            Text("I'm just always here.")
        }
    }
}

PlaygroundPage.current.setLiveView(ContentView())
4

1 に答える 1