多次旋转图像并停止在所需的程度?

时间:2017-06-30 20:26:49

标签: ios objective-c core-animation image-rotation

我尝试了各种方法,无法弄清楚如何实现这一点。我在互联网上搜索了很多,但无法弄清楚。

我有一个 ImageView (一个旋转的轮子),我想将它旋转360度10次(这只是让用户感觉快速转动轮),然后我想要将它旋转特定值,比如90度(但可能会有所不同)。

在此动画完成后,我想将ImageView带回初始位置。

我如何实现这一目标? 提前谢谢。

1 个答案:

答案 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;
    }]; 
}