2016-03-24 18 views
0

ボタンを360度時計回りにアニメートし、アニメーションを360反時計回りに反転します。アニメーションは常に時計回り360度です。アニメートボタン360時計回り/巻き戻し

func animateShowingOfMenu(){ 

     let angle = CGFloat(180 * M_PI/180) 
     UIView.animateWithDuration(0.4 
      , animations: {() -> Void in 

       self.blurView.hidden=false 
       self.menuBtn.transform = CGAffineTransformMakeRotation(angle) 
       self.menuBtn.transform = CGAffineTransformMakeRotation(0) 


      }) { (completion) -> Void in 

       print("compeleted") 
     } 

    } 

    func animateHidingOfMenu(){ 

     let angle = CGFloat(-180 * M_PI/180) 
     UIView.animateWithDuration(0.4 
      , animations: {() -> Void in 

       self.blurView.hidden = true 
       self.menuBtn.transform = CGAffineTransformMakeRotation(angle) 
       self.menuBtn.transform = CGAffineTransformMakeRotation(0) 


      }) { (completion) -> Void in 

     } 
    } 

答えて

6

単純な一般的な解決策は、あなたは、あなたが(ここでself.imageVと命名)ImageViewのを回転させるようにしたいとしましょう何に

//Clock-wise 
rotateAnyView(makeOrderButton, fromValue: 0, toValue: 2.0 * M_PI, duration: 1) 

//Reverse 
rotateAnyView(makeOrderButton, fromValue: 2.0 * M_PI, toValue:0, duration: 1) 

func rotateAnyView(view: UIView, fromValue: Double, toValue: Float, duration: Double = 1) { 
    let animation = CABasicAnimation(keyPath: "transform.rotation") 
    animation.duration = duration 
    animation.fromValue = formValue 
    animation.toValue = toValue 
    view.layer.addAnimation(animation, forKey: nil) 
} 
0

のObjective-CでのPFBの答え:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
animation.duration = 1; 
animation.fromValue = [NSNumber numberWithFloat:0]; 
animation.toValue = [NSNumber numberWithFloat:2 * M_PI]; 
animation.autoreverses = YES ; 
[self.containerView.layer addAnimation:animation forKey:nil]; 

お楽しみください!

0
self.menuBtn.transform = CGAffineTransformMakeRotation(CGFloat(-90 * M_PI/180)) 
self.menuBtn.transform = CGAffineTransformMakeRotation(CGFloat(M_PI) 
self.menuBtn.transform = CGAffineTransformMakeRotation(CGFloat(90 * M_PI/180)) 
self.menuBtn.transform = CGAffineTransformMakeRotation(CGFloat(0) 

これは私の仮定である:

回転が最短の方向に行われます。 180は両方向から同じであるため、常に時計回りに回転します。そこで反時計回りに90度の方向を与えます。 スウィフト

0
UIView.animateKeyframesWithDuration(1.0, delay: 0, options: [.Repeat], animations: { 
      UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 0.25, animations: { 
       self.imageV.transform = CGAffineTransformMakeRotation(90.0 * CGFloat(M_PI)/180.0) 
      }) 
      UIView.addKeyframeWithRelativeStartTime(0.25, relativeDuration: 0.25, animations: { 
       self.imageV.transform = CGAffineTransformMakeRotation(180.0 * CGFloat(M_PI)/180.0) 
      }) 
      UIView.addKeyframeWithRelativeStartTime(0.50, relativeDuration: 0.25, animations: { 
       self.imageV.transform = CGAffineTransformMakeRotation(270.0 * CGFloat(M_PI)/180.0) 
      }) 
      UIView.addKeyframeWithRelativeStartTime(0.75, relativeDuration: 0.25, animations: { 
       self.imageV.transform = CGAffineTransformMakeRotation(360.0 * CGFloat(M_PI)/180.0) 
      }) 

      }, completion: nil) 
+0

を回転させることができます。オプションに.repeatが含まれているので、それは永遠に繰り返されます。 –

関連する問題