我需要做以下事情。启动一个等待 5 秒的函数,然后执行持续 3 秒的 withAnimation 块。在这 3 秒的时间段内,变量不透明度的值应为 0。我应该能够在 8 秒内的任何位置取消此功能。我的代码是这样的:
@State var opacity: Double = 1.0
DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
withAnimation(.easeInOut(duration: 3)) {
opacity = 0.0
}
}
如何才能做到这个功能在8秒期间可以随时取消。因此,如果该功能被取消,不透明度将设置为 1。
您可以使用
DispatchQueue
修饰符将开始延迟构建到动画中,而不是使用
.delay
,然后 SwiftUI 应该为您处理所有事情。
withAnimation(.easeInOut(duration: 3).delay(5)) {
opacity = 0.0
}