我已经在我的项目中安装了Gifu来管理一些gif动画。
有没有人知道在动画的1个循环结束后如何运行代码?
我似乎在动画的同时运行完成处理代码。
这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
animatedDone.animate(withGIFNamed: "animatedTick.gif")
animatedDone.prepareForAnimation(withGIFNamed: "animatedTick.gif", loopCount: 1) { (Void) in
saveAndExit()
}
}
答案 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()
})
})
}