我第二次使用iOS5 CGAffineTransformMakeRotation不起作用?

时间:2012-04-14 18:30:52

标签: animation ios5 cgaffinetransform image-rotation

我有简单的旋转变换,结合alpha,在第一次调用时效果很好,但第二次不会发生旋转(用户通过点击屏幕启动此动画)。

这是我的基本动画功能:

- (void) animateMe:(UIImageView *)myImage delay:(NSTimeInterval)dly
{
    [UIView animateWithDuration:1.0 
                          delay:dly
                        options:UIViewAnimationOptionAutoreverse
                     animations:^(void){
                         myImage.alpha = 1.0;
                         myImage.transform = CGAffineTransformMakeRotation(180.0);
                     }
                     completion:^(BOOL finished) {
                         myImage.alpha = 0.0;
                  }];
}

1 个答案:

答案 0 :(得分:7)

问题是第二次要旋转视图时,它已经旋转180度并且行:

myImage.transform = CGAffineTransformMakeRotation(180.0);

相当于:

myImage.transform = myImage.transform;

所以你应该这样做:

myImage.transform = CGAffineTransformRotate(myImage.transform, 180.0);

请注意,documentation表示旋转角度应为弧度而不是度。因此,您可能应该使用M_PI代替180.0

另请注意,documentation表示UIViewAnimationOptionAutoreverse 必须UIViewAnimationOptionRepeat合并。

  

<强> UIViewAnimationOptionAutoreverse

     

向后和向前运行动画。必须与UIViewAnimationOptionRepeat选项结合使用。