12.5 添加或移除视图的时候使用动画
添加或删除视图,是一种常见的操作。例如下面一个例子,点击一个按钮时,会添加或删除文本详情视图:
struct ContentView: View {
@State var showDetails = false
var body: some View {
VStack {
Button(action: {
withAnimation {
self.showDetails.toggle()
}
}) {
Text("Tap to show details")
}
if showDetails {
Text("Details go here.")
}
}
}
}
默认情况下,SwiftUI 会使用淡入淡出的动画来添加或删除视图。但是如果需要定制化,可以使用 transition()
修改器来实现。
比如对于这个文本详情的动画我们不想使用淡入淡出,要使用从底部滑入滑出的方式,代码如下:
Text("Details go here.")
.transition(.move(edge: .bottom))
也有一个 .slide
动画转场,视图动画从左侧滑入,右侧滑出,如下:
Text("Details go here.")
.transition(.slide)
另一个叫做 .scale
动画转场,视图动画从最小放大到正常大小,再从正常缩小到无,如下:
Text("Details go here.")
.transition(.scale())