我进行了简单的旋转变换,并与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;
                  }];
}

最佳答案

问题是您第二次要旋转 View 时,它已经旋转了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结合使用。

关于animation - iOS5 CGAffineTransformMakeRotation第二次不能正常工作吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10156198/

10-10 20:11