我正在尝试在视图之间实现自己的转换,其中单击“返回”按钮将为一个方向的转换设置动画,而单击“下一步”转换将为另一个方向设置动画。
struct InputForm: View {
...
@Binding var idx: Int
let nextTransition = AnyTransition.asymmetric(insertion: .move(edge: .trailing), removal: .move(edge: .leading))
let backTransition = AnyTransition.asymmetric(insertion: .move(edge: .leading), removal: .move(edge: .trailing))
@State var activeTransition = AnyTransition.asymmetric(insertion: .move(edge: .trailing), removal: .move(edge: .leading))
var body: some View {
HStack {
Button(action: {
withAnimation {
self.activeTransition = self.nextTransition
self.idx -= self.idx == 0 ? 0 : 1
}
}) {
Text("Back")
}.buttonStyle(CoreBasicButtonStyle(color: .mainGray))
Button(action: {
withAnimation {
self.activeTransition = self.nextTransition
self.idx += self.idx == 1 ? 0 : 1
}
}) {
Text("Next")
}.buttonStyle(CoreBasicButtonStyle(color: .mainGray))
}
}
.animation(.easeInOut)
.transition(activeTransition)
}
}
由于某种原因,它只使用初始转换并且永远不会改变。SwiftUI 不能检测到状态变化.transition
吗?