如何在 SwiftUI 中停止/取消动画

问题描述 投票:0回答:1

我需要做以下事情。启动一个等待 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。

swift animation swiftui cancellation
1个回答
0
投票

您可以使用

DispatchQueue
 修饰符将开始延迟构建到动画中,而不是使用 
.delay
,然后 SwiftUI 应该为您处理所有事情。

withAnimation(.easeInOut(duration: 3).delay(5)) {
  opacity = 0.0
}
© www.soinside.com 2019 - 2024. All rights reserved.