这不是意味着可以控制在表单视图中发生的动画吗?我在这里有一个游乐场来演示这个问题,以及一个发生了什么的 gif。如您所见,我在第二个动画视图上的过渡完全被忽略了,我不得不手动放慢视频速度,因为持续时间也被忽略了。
我真的不想要缩放过渡,这只是为了证明无论我放什么动画都是一样的。这是预期的,还是一个错误?还是我只是在做完全错误的事情?
我也不清楚为什么 VStack 的动画与简单的 Text 字段的处理方式如此不同,后者很好地向下滑动,而 VStack 似乎得到了 .move 和 .opacity 的某种组合。
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())