animation - 如何动画视图插入/删除的过渡?插入动画不起作用
问题描述
我无法在 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 中的实时预览有问题,而且显然不能很好地处理过渡。
所以这个问题的答案很简单:在真机上测试!:)
解决方案
好吧,这只是对 SwiftUI 预览历史的观察,直到现在(不能说下一个版本会是什么),但是 -过渡在预览中根本无法正常工作(静态或实时- 看起来像限制,所以不要在那里测试它们。
在独立模拟器上测试转换,或者更可取的是,在真实设备上测试转换。
推荐阅读
- ios - 在tableView中搜索后出现错误的单元格图标
- r - 仅匹配并提取至少有一个值超出指定范围的那些 Date 行的 ID
- scrollmagic - 停止显示 Scrollmagic 触发器
- oracle - 跳过 Oracle 中的锁定行
- sql - MySQL删除查询没有结束
- php - 获取序列化的 stdClass 值
- .net - 我们可以更改属性信息模式吗(我们可以在扩展方法中将 Can Write 属性重写为 true)
- variations - 如何更新产品变体数量
- arrays - JavaScript:数组中的多个事实
- angular - 下载 pdf 文件时解析 http 时出现 Http 失败...