msm*_*lko 4 animation transition swiftui
我无法在 SwiftUI 中进行插入转换。
我有一个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)))
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
正如 @Asperi 在评论中指出的那样,代码是正确的,但是......它仅在真实设备上运行时才有效。Xcode 中的实时预览存在缺陷,并且显然不能很好地处理转换。
所以这个问题的答案很简单:在真机上测试!:)
好吧,好吧,这只是从 SwiftUI 预览历史记录到现在为止的观察(无法说出下一版本中会发生什么),但是 -过渡在预览中根本无法正常工作(静态或实时- 看起来像是限制) ,所以不要在那里测试它们。
在独立模拟器上测试转换,或者最好在真实设备上测试转换。