我正在尝试旋转UIImageView360 度,并在线查看了几个教程。UIView如果不停下来,或者跳到一个新的位置,我就不能让它们工作。
UIImageView
UIView
我尝试过的最新方法是:
[UIView animateWithDuration:1.0 delay:0.0 options:0 animations:^{ imageToMove.transform = CGAffineTransformMakeRotation(M_PI); } completion:^(BOOL finished){ NSLog(@"Done!"); }];
但是如果我使用 2*pi,它根本不会移动(因为它是相同的位置)。如果我尝试只做 pi(180 度),它可以工作,但如果我再次调用该方法,它会向后旋转。
编辑 :
[UIView animateWithDuration:1.0 delay:0.0 options:0 animations:^{ [UIView setAnimationRepeatCount:HUGE_VALF]; [UIView setAnimationBeginsFromCurrentState:YES]; imageToMove.transform = CGAffineTransformMakeRotation(M_PI); } completion:^(BOOL finished){ NSLog(@"Done!"); }];
也不行。它转到180度数,暂停片刻,然后在重新0开始之前重置回度数。
180
0
找到了一种对我来说非常有效的方法(我对其进行了一些修改):
#import <QuartzCore/QuartzCore.h> - (void) runSpinAnimationOnView:(UIView*)view duration:(CGFloat)duration rotations:(CGFloat)rotations repeat:(float)repeat { CABasicAnimation* rotationAnimation; rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ]; rotationAnimation.duration = duration; rotationAnimation.cumulative = YES; rotationAnimation.repeatCount = repeat ? HUGE_VALF : 0; [view.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"]; }