如何为视图插入/移除的过渡设置动画?插入动画无效

时间:2020-02-27 12:52:53

标签: animation swiftui transition

我无法进行插入转换以在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)))
        }
    }
}

编辑:

正如@Asperi在评论中指出的那样,代码是正确的,但是...仅当在真实设备上运行时才起作用。 Xcode中的实时预览存在错误,显然不能很好地处理过渡。

因此,此问题的答案很简单:在真实设备上进行测试! :)

1 个答案:

答案 0 :(得分:2)

好吧,好吧,这只是从SwiftUI预览历史到现在为止的观察(不能说下一版本中的内容),但是-转换在预览中根本无法正常工作(静态或静态)。直播-看起来很有限,所以不要在那里进行测试。

可以在独立的模拟器上进行转换,也可以在真实设备上进行转换。