2017-05-07 17 views
1

私は正方形の画像を持っていて、回転させる方法を知っています。アニメーションが回転して、ちょっと止まり、再び回転します。画像を回転させる方法(アニメーション)

は私が持っているものだけで基本的なスピンであるが、上記のgifのようには見えません。

extension UIView { 
    func rotate360Degrees(duration: CFTimeInterval = 3) { 
     let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation") 
     rotateAnimation.fromValue = 0.0 
     rotateAnimation.toValue = CGFloat(M_PI * 2) 
     rotateAnimation.isRemovedOnCompletion = false 
     rotateAnimation.duration = duration 
     rotateAnimation.repeatCount=Float.infinity 
     self.layer.add(rotateAnimation, forKey: nil) 
    } 
} 

これが行われる方法上の任意の考えを?

答えて

3

緩和のタイミング機能を使用する必要があります。これは、緩和の容易なタイミング機能とも呼ばれます。

私は、Core Animationのの標準的な使いやすさで、使いやすさ、タイムアウト機能を使用するように機能を変更した:

extension UIView { 
    func rotate360Degrees(duration: CFTimeInterval = 0.8) { 
     let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation") 
     rotateAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
     let radians = CGFloat.pi/4 
     rotateAnimation.fromValue = radians 
     rotateAnimation.toValue = radians + .pi 
     rotateAnimation.isRemovedOnCompletion = false 
     rotateAnimation.duration = duration 
     rotateAnimation.repeatCount=Float.infinity 
     self.layer.add(rotateAnimation, forKey: nil) 
    } 
} 

結果:

demo

なお、あなたのイメージで、それボックスが180度ごとに停止するように見えるので、関数を180度だけ回転するように変更しました。ボックスは90度の放射状の対称性を持っているので、180度と360度のポーズで、まるで周りを見るように見えます。

放射状の対称性を持たないイメージをアニメートする必要がある場合は、180度と360度の両方で使いやすさを達成するには、CAKeyframeAnimationを使用する必要があります。

+0

すごく速く、完全に機能します!ありがとうございました - もしあなたが私がどれくらい助けに感謝しているかだけ知っていたら!あなたのベスト:) – JEL

0

同様の効果は、delayの繰り返しアニメーションでも達成できます。

UIView.animate(withDuration: 1, 
         delay: 0.2, 
        options: [.repeat], 
       animations: { imageView.transform = imageView.transform.rotated(by: CGFloat.pi) }, 
       completion: nil) 
関連する問題