当Gifu完成动画时运行代码

时间:2017-03-15 23:01:21

标签: swift animation completionhandler

我已经在我的项目中安装了Gifu来管理一些gif动画。

有没有人知道在动画的1个循环结束后如何运行代码?

我似乎在动画的同时运行完成处理代码。

这是我的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    animatedDone.animate(withGIFNamed: "animatedTick.gif")
    animatedDone.prepareForAnimation(withGIFNamed: "animatedTick.gif", loopCount: 1) { (Void) in
        saveAndExit()
    }

}

1 个答案:

答案 0 :(得分:4)

此回调仅用于准备动画。这不是动画完成时调用的回调。我发现这种情况的解决方案是在动画持续时间后调度队列。

 override func viewDidLoad() {
    super.viewDidLoad()
    let animatedDone = GIFImageView()
    animatedDone.prepareForAnimation(withGIFNamed: "animatedTick.gif", loopCount: 1)


    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: {
        animatedDone.startAnimatingGIF()
        DispatchQueue.global().asyncAfter(deadline: .now() + 0.5 + animatedDone.gifLoopDuration, execute: { // dispatch main or global
            saveAndExit()
        })
    })
}