SwiftUI有两种方法可以为其视图层次结构的更改设置动画:animation()
和withAnimation()
。
它们在不同的地方使用,但都有平滑应用程序中视图变化的效果。
animation()方法用于绑定,它要求SwiftUI为导致绑定值被修改的任何更改设置动画
1.animation()示例:
struct ContentView: View {
@State private var showingWelcome = false
var body: some View {
VStack {
Toggle("Toggle label", isOn: $showingWelcome.animation())
if showingWelcome {
Text("Hello World")
}
}
}
}
控制动画类型,默认是 fade animation
Toggle("Toggle label", isOn: $showingWelcome.animation(.spring()))
使用常规状态而不是绑定时,可以通过在withAnimation()调用中包装更改来设置更改的动画
2.withAnimation()示例:
struct ContentView: View {
@State private var showingWelcome = false
var body: some View {
VStack {
Button("Toggle label") {
withAnimation(.spring()) {
showingWelcome.toggle()
}
}
if showingWelcome {
Text("Hello World")
}
}
}
}
注意:这两个结合动画是同时进行的,不分先后顺序 原文:https://www.hackingwithswift.com/quick-start/swiftui/swiftui-tips-and-tricks