2014-11-21 43 views
1

我使用这个代码:如何在按下另一个按钮时不断旋转按钮45度?

[UIView animateWithDuration:ANIMATION_DURATION_SLOW 
         delay:0 
    usingSpringWithDamping:0.4 
     initialSpringVelocity:5.0 
        options:0 
       animations:^{ 

        _button.transform = CGAffineTransformMakeRotation(-M_PI_4); 
       } 
       completion:nil]; 

但是,该按钮只转动的第一次。无论我多次调用此方法,它都不会再次旋转。

回答

3

设置旋转变换不会添加到上一个变换中,它将替换它,因此您需要记住最后一次敲击过程中的位置。一个快速的方法来做到这一点是一个静态变量。

static tapCount = 0; 
tapCount++; 

[UIView animateWithDuration:ANIMATION_DURATION_SLOW 
        delay:0 
usingSpringWithDamping:0.4 
    initialSpringVelocity:5.0 
       options:0 
      animations:^{ 

       _button.transform = CGAffineTransformMakeRotation(-M_PI_4 * tapCount); 
      } 
      completion:nil]; 
1

这是因为你需要改变角度。 考虑:

-(CGFloat)angle{ 
    if (!_angle) { 
     _angle = -M_PI_4; 
    } 

    _angle += -M_PI_4; 

return _angle; 
} 
相关问题