Animation iOS5 CGAffineTransformMakeRotation不';我第二次不工作了?

Animation iOS5 CGAffineTransformMakeRotation不';我第二次不工作了?,animation,ios5,cgaffinetransform,image-rotation,Animation,Ios5,Cgaffinetransform,Image Rotation,我有简单的旋转变换,结合alpha,在第一次调用时效果很好,但第二次旋转不会发生(用户通过点击屏幕启动此动画) 以下是我的基本动画功能: - (void) animateMe:(UIImageView *)myImage delay:(NSTimeInterval)dly { [UIView animateWithDuration:1.0 delay:dly options:UIView

我有简单的旋转变换,结合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;
                  }];
}

问题是,第二次要旋转视图时,视图已经旋转了180度,直线:

myImage.transform = CGAffineTransformMakeRotation(180.0);
相当于:

myImage.transform = myImage.transform;
所以你应该做一些类似的事情:

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

请注意,说明旋转角度应为弧度,而不是度。因此,您可能应该使用
mupi
而不是
180.0

另外,请注意,
uiviewmanimationoptionautoreverse
必须与
uiviewmanimationoptionrepeat
结合使用

UIViewAnimationOptionAutoreverse

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


谢谢,这很有帮助!我会尝试一下你的建议,并指定检查是否有效,听起来你可能是对的。非常惊讶他们会使用弧度——这似乎是一种笨拙的方法,但我明白文档中是这么说的。好的,我花了一点时间才意识到CgaffinetTransformRotate()与CgaffinetTransformMakeRotation()是一个不同的函数!你的建议行得通,谢谢。您的链接非常有用,我正在学习很多关于仿射变换的知识。另外一条评论是,我一直在阅读有关块动画的文档,其中说您可以结合UIViewAnimationOptionAutoReverse指定重复计数——不需要结合UIViewAnimationAutoRepeat。