2016-12-30 3 views
0

私はUIButtonのフリップXアニメーションをしようとしていました。私はこのアニメーションを行う方法に関するいくつかのドキュメントを見てきましたが、繰り返しでそれを行う方法を見つけることができませんでした。たとえば、私はUIButtonの画像を反転し、繰り返して5秒の時間間隔の後に変更したいと思います。 ヘルプがありますか?ありがとう。一定の時間が経過してxアニメーションが繰り返し再生される

答えて

0

CAAnimationGroupを使用すると、アニメーションの配列をグループ化できます。 animationGroup全体の合計アニメーションは6.0、フリップアニメーションは1.0秒です。残りの5.0秒はここで遅れとして働く。

EDIT:CATransaction.setCompletionBlockを使用することができますが、すべてのアニメーションが完了した後、それが唯一の完了を呼び出します。今度はフリップが1回だけ行われ、完了すると完了コールが受信され、イメージビューが更新され、再びフリップアニメーションが開始されます。

あなたの答えのために、この

imageView.flip { 
    // update imageView and call it again. 
} 

extension UIView { 
    func flip(completion: @escaping()->()) { 
     CATransaction.begin() 
     CATransaction.setCompletionBlock { 
      // completion code here 
      completion() 
     } 

     let animationGroup = CAAnimationGroup() 
     animationGroup.duration = 6.0 
     animationGroup.repeatCount = 1 

     let easeInOut = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 

     let animation = CABasicAnimation(keyPath: "transform") 
     animation.duration = 1.0 
     animation.autoreverses = true 
     animation.fromValue = CATransform3DIdentity 
     animation.toValue = NSValue(caTransform3D: CATransform3DMakeRotation(CGFloat(M_PI), 0, 1, 0)) 
     animation.timingFunction = easeInOut 

     animationGroup.animations = [animation] 
     layer.anchorPoint = CGPoint(x: 0.5, y: 0.5) 
     layer.add(animationGroup, forKey: "flip") 

     CATransaction.commit() 
    } 
} 
+0

おかげのように、私は、例えば、5秒(遅延)、ビューフリップとそのビューの変更のイメージのためにした後、それをしたいです。 –

+0

編集された回答があなたの必要性に合っているかどうかを確認してください。 – Matt

+0

ありがとう、それは働いた!別の質問ですが、私はビューのイメージをどこで変えるべきですか?どのラインでアニメーションが終了したことが検出されましたか? –

関連する問題