フォーム ビュー内で発生するアニメーションを制御できるようにするためのものではありませんか? ここに、問題を示すプレイグラウンドと、何が起こるかの 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())