12.3 状态改变的时候附加动画效果
SwiftUI 的双向绑定可以让我们很好地管理程序的各种状态,例如在视图层面,我们可以使某些视图显示或消失,或调整视图的透明度。
但是状态的更改是没有动画的,不过我们可以通过添加 animation()
修改器来实现动画。例如,我们先创建一个切换按钮,然后根据按钮的切换来显示或隐藏某个文本视图:
struct ContentView : View {
@State var showingWelcome = false
var body: some View {
VStack {
Toggle(isOn: $showingWelcome) {
Text("Toggle label")
}
if showingWelcome {
Text("Hello World")
}
}
}
}
运行这段代码就会发现,文本的显示或消失,是没有动画的。如需动画,则添加动画修改器 $showingWelcome.animation()
,那这样子就有动画了。
Toggle(isOn: $showingWelcome.animation()) {
Text("Toggle label")
}
当然这个 animation()
修改器也是支持参数的,比如加个弹簧效果。如下:
Toggle(isOn: $showingWelcome.animation(.spring())) {
Text("Toggle label")
}