我无法使 SwiftUI 中的插入转换(insertion transition)起作用。
我有一个Group
,条件地显示其中两个视图之一。当我尝试对转换进行动画处理时,删除转换可以运作,但插入不行 - 视图立即出现而没有任何动画效果。
下面是我的视图代码,请问我该如何使它工作? (Xcode 11.3.1)
struct TestView: View {
@State private var showView = false
var body: some View {
VStack {
Button(action: {
withAnimation {
self.showView.toggle()
}
}) {
Text("Tap")
}
Group {
if showView {
Color.red
.frame(width: 100, height: 100)
} else {
Color.blue
.frame(width: 100, height: 100)
.cornerRadius(50)
}
}
.transition(.asymmetric(insertion: .move(edge: .leading),
removal: .move(edge: .trailing)))
}
}
}
编辑:
正如评论中@Asperi所指出的那样,代码是正确的,但是……它只能在真实设备上运行。Xcode中的实时预览存在漏洞,并且似乎无法很好地处理转换。
因此,这个问题的答案很简单:在真实设备上测试!:)
withAnimation
更新为withAnimation(.easeInOut(duration: 2))
,然后你会在预览中看到问题。 - Aleksey Potapov