【发布时间】:2020-02-27 12:52:53
【问题描述】:
我无法在 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 中的实时预览有问题,而且显然不能很好地处理过渡。
所以这个问题的答案很简单:在真机上测试! :)
【问题讨论】:
-
看起来工作正常。你能附上屏幕录像来比较吗?
-
这里也一样。您能否展示/解释一下到底出了什么问题?
-
@Asperi 尝试将
withAnimation更新为withAnimation(.easeInOut(duration: 2)),您将在预览中看到问题 -
@AlekseyPotapov,转场在预览中不能正常工作(看起来像限制),所以不要在那里测试它们。
-
天哪,这些信息有很大帮助。谢谢!将此添加为关闭问题的答案。
标签: animation swiftui transition