【发布时间】:2021-07-15 22:39:45
【问题描述】:
如何在不同视图之间设置幻灯片过渡动画?
在下面的示例代码中,我创建了一个 Picker,用于选择要显示的视图,我的目标是获得一个看起来类似于 NavigationLink 转换的转换。
目前它根本没有动画。
如果我将 .animation(.easeInOut(duration: 2)) 修饰符添加到 ZStack ,它会为淡入淡出动画设置 2 秒的动画,但我不明白为什么。
struct ContentView: View {
enum WhichScreen: String, CaseIterable {
case red, blue, green, yellow
}
@State private var whichScreen = WhichScreen.red
var body: some View {
VStack {
Picker("screen", selection: $whichScreen.animation()) {
ForEach(WhichScreen.allCases, id: \.self) { value in
Text(value.rawValue).tag(value)
}
}
.pickerStyle(SegmentedPickerStyle())
ZStack {
Color.black
switch whichScreen {
case .red:
Color.red
case .blue:
Color.blue
case .green:
Color.green
case .yellow:
Color.yellow
}
}
.transition(.slide)
}
}
}
【问题讨论】:
标签: swift swiftui swiftui-animation swiftui-zstack