当点击另一个按钮时,如何不断地将按钮旋转45度?

时间:2014-11-21 23:24:02

标签: ios objective-c rotation cgaffinetransform

我正在使用此代码:

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

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

但是,按钮仅在第一次旋转。无论我多少次调用此方法,它都不会再次旋转。

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

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

    _angle += -M_PI_4;

return _angle;
}