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