2017-03-15 46 views
0

gifを私のプロジェクトにインストールして、いくつかのgifアニメーションを管理しました。岐阜がアニメーションを終了したときにコードを実行

アニメーションの1つのループが終了したらコードを実行する方法を知っていますか?

完成処理コードがアニメーションと同時に実行されるようです。

override func viewDidLoad() { 
    super.viewDidLoad() 

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

} 

答えて

2

このコールバックは、アニメーションだけを調製するためのものである:

は、ここに私のコードです。アニメーションが完了したときに呼び出されるのはコールバックではありません。私はこの状況の解決策がアニメーションの期間の後にキューをディスパッチすることを発見しました。

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() 
     }) 
    }) 
} 
関連する問題