I am using the code below to try and get my recognizer to continue spinning after the state has ended. It only seems to get one rotation no matter how high I set the value in the CGAffineTransformRotate.
Any insight or suggestions would be appreciated.
Thanks.
if([(UIRotationGestureRecognizer*)recognizer state] == UIGestureRecognizerStateEnded)
{开发者_运维百科
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:6.55];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, 1000000000);
[UIView commitAnimations];
}
You might want to try to use a CABasicAnimation
- (void)rotate {
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:2.0] forKey:kCATransactionAnimationDuration];
CABasicAnimation *animation;
animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0];
animation.toValue = [NSNumber numberWithFloat:2 * M_PI];
animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear];
animation.delegate = self;
[recognizer.layer addAnimation:animation forKey:@"rotationAnimation"];
[CATransaction commit];
}
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finished {
if (finished)
[self rotate];
}
This will cause the rotation to continue until you specify to remove the animation.
There's more infomation and options in the CABasicAnimation Class Reference
精彩评论