【发布时间】:2021-12-08 06:58:33
【问题描述】:
我正在处理一系列屏幕,这些屏幕应该在按下按钮时发生变化,并且应该从右向左滑入/滑出。
除了.slide 过渡使它从前沿移入并移出到后沿之外,一切都运行良好。 (从左到右)
我想在不改变尾随/前导的情况下反转过渡动画方向(至少不是在应用程序的整个上下文中)。
我尝试将过渡更改为 .move(edge: .trailing),但视图随后从同一方向移入和移出。
import SwiftUI
struct ContentView: View {
enum screens {
case start, mid, final
}
@State var curScreen: screens = .start
func changeScreen() {
switch curScreen {
case .start:
curScreen = .mid
case .mid:
curScreen = .final
case .final:
return
}
}
var body: some View {
switch curScreen {
case .start:
ScreenView(callback: changeScreen, text: "Start")
.transition(.slide)
case .mid:
ScreenView(callback: changeScreen, text: "Mid")
.transition(.slide)
case .final:
ScreenView(callback: {}, text: "Final")
.transition(.slide)
}
}
}
struct ScreenView: View {
let callback: () -> ()
let text: String
var body: some View {
Text(text)
.padding()
.frame(maxWidth: .infinity)
.onTapGesture {
withAnimation(.default) {
callback()
}
}
}
}
【问题讨论】:
-
这是否回答了您的问题stackoverflow.com/a/63782921/12299030?
-
@Asperi 是的!非常感谢!
标签: ios swift iphone swiftui swiftui-animation