1

我正在尝试在视图之间实现自己的转换,其中单击“返回”按钮将为一个方向的转换设置动画,而单击“下一步”转换将为另一个方向设置动画。

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吗?

4

0 回答 0