Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Animation 如何设置视图插入/删除的过渡动画?插入动画不';行不通_Animation_Swiftui_Transition - Fatal编程技术网

Animation 如何设置视图插入/删除的过渡动画?插入动画不';行不通

Animation 如何设置视图插入/删除的过渡动画?插入动画不';行不通,animation,swiftui,transition,Animation,Swiftui,Transition,我无法在SwiftUI中进行插入转换 我有一个组,它有条件地显示两个视图中的一个。当我尝试设置过渡动画时,删除过渡有效,但插入无效-视图只是立即出现,没有任何动画 我正在我的视图代码下面粘贴。我怎样才能做到这一点? (代码11.3.1) 编辑: 正如@Asperi在评论中指出的,代码是正确的,但是。。。它只有在真正的设备上运行时才能工作。Xcode中的实时预览有缺陷,显然不能很好地处理转换 所以这个问题的答案很简单:在真实设备上测试!:)好吧,好吧,这只是从SwiftUI预览历史中观察到的,直

我无法在SwiftUI中进行插入转换

我有一个
,它有条件地显示两个视图中的一个。当我尝试设置过渡动画时,删除过渡有效,但插入无效-视图只是立即出现,没有任何动画

我正在我的视图代码下面粘贴。我怎样才能做到这一点? (代码11.3.1)


编辑:

正如@Asperi在评论中指出的,代码是正确的,但是。。。它只有在真正的设备上运行时才能工作。Xcode中的实时预览有缺陷,显然不能很好地处理转换


所以这个问题的答案很简单:在真实设备上测试!:)

好吧,好吧,这只是从SwiftUI预览历史中观察到的,直到现在(不能说下一个版本中会出现什么),但是-转换在预览中根本不能正常工作(静态或动态-看起来有限制,所以不要在那里测试它们


可以在独立模拟器上测试转换,或者最好在真实设备上测试转换。

看起来效果很好。您可以附加屏幕记录进行比较吗?此处相同。您可以显示/解释,到底出了什么问题吗?@Asperi尝试将
with animation
更新为
with animation(.easeInOut(持续时间:2))
您将在Preview@AlekseyPotapov,转换在预览中无法正常工作(看起来有限制),所以不要在那里测试它们。天哪,此信息帮助很大。谢谢!添加此作为结束问题的答案。
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)))
        }
    }
}