我有一个.png格式的轮子图像,我想知道我怎么能动画,以便它连续旋转,我搜索stackoverflow并找到某些代码片段,帮助我旋转我的图像,但它不会连续旋转,它会只需旋转几秒钟即可停止,代码如下
viewdidload中的代码
UIImageView *imagetoMove =
[[UIImageView alloc] initWithImage:[UIImageimageNamed:@"horo_circle.png"]];
[self.view addSubview:imagetoMove];
[self rotateImage:imagetoMove duration:5.0
curve:UIViewAnimationCurveEaseIn degrees:180];
和动画
- (void)rotateImage:(UIImageView *)image duration:(NSTimeInterval)duration
curve:(int)curve degrees:(CGFloat)degrees
{
// Setup the animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:curve];
[UIView setAnimationBeginsFromCurrentState:YES];
// The transform matrix
CGAffineTransform transform =
CGAffineTransformMakeRotation(degrees_TO_radians(degrees));
image.transform = transform;
// Commit the changes
[UIView commitAnimations];
}
以及导入后的以下行
#define M_PI 3.14159265358979323846264338327950288 /* pi */ #define degrees_TO_radians(angle) (angle / 180.0 * M_PI)
解决方法
您最好使用CABasicAnimation执行此操作:
if ([self.spinnerOverlay animationForKey:@"SpinAnimation"] == nil) {
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.tovalue = [NSNumber numberWithFloat: 2*M_PI];
animation.duration = 10.0f;
animation.repeatCount = INFINITY;
[self.spinnerOverlay.layer addAnimation:animation forKey:@"SpinAnimation"];
}
在这段代码中,我检查动画是否全部准备就绪,不需要再次设置.
在您的情况下,spinnerOverlay是您要旋转的UIImageView.
要停止动画:
[self.spinnerOverlay.layer removeAnimationForKey:@"SpinAnimation"];