我尝试了各种方法,无法弄清楚如何实现这一点。我在互联网上搜索了很多,但无法弄清楚。
我有一个 ImageView (一个旋转的轮子),我想将它旋转360度10次(这只是让用户感觉快速转动轮),然后我想要将它旋转特定值,比如90度(但可能会有所不同)。
在此动画完成后,我想将ImageView带回初始位置。
我如何实现这一目标? 提前谢谢。
答案 0 :(得分:0)
我发现了如何做到这一点。 我使用下面的方法旋转360度10次,然后旋转特定程度。
-(void)rotate:(int)degreeToRotate
{
CGFloat radians = (M_PI/180) * degreeToRotate;
[UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations: ^{
//configuring to rotate 360 degree 10 times
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ];
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 10;
[_scoreImageView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
} completion:^(BOOL finished) {
//rotate by particular degree
[ UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
// -radians, to ensure clockwise rotation
self.scoreImageView.transform = CGAffineTransformMakeRotation(-radians);
} completion:^(BOOL finished) {
//method call to reset image original position
[self performSelector:@selector(resetPosition) withObject:nil afterDelay:3];
}];
}];
}
下面的方法用于将图像重置为原始位置。
-(void)resetPosition
{
[UIView animateWithDuration:0.2 animations:^() {
self.scoreImageView.transform = CGAffineTransformIdentity;
}];
}