【发布时间】:2019-07-05 17:44:19
【问题描述】:
我正在 SwiftUI 中制作一个相对复杂的动画,我想知道链接各个动画阶段的最佳/最优雅的方式是什么。
假设我有一个首先需要缩放的视图,然后等待几秒钟然后淡出(然后等待几秒钟并重新开始 - 无限期地)。
如果我尝试在同一个视图/堆栈上使用多个 withAnimation() 块,它们最终会相互干扰并弄乱动画。
到目前为止,我能想到的最好的方法是在初始视图 .onAppear() 修饰符上调用自定义函数,并在该函数中为动画的每个阶段设置 withAnimation() 块,并在它们之间设置延迟。所以,它基本上看起来像这样:
func doAnimations() {
withAnimation(...)
DispatchQueue.main.asyncAfter(...)
withAnimation(...)
DispatchQueue.main.asyncAfter(...)
withAnimation(...)
...
}
它最终会变得很长而且不是很“漂亮”。我确信必须有更好/更好的方法来做到这一点,但到目前为止我尝试的一切都没有给我想要的确切流程。
任何想法/建议/提示将不胜感激。谢谢!
【问题讨论】:
标签: animation swiftui xcode11 ios13