iOS 实现UIImageView 的不停的旋转(更新:2017.7.26)

时间:2022-10-21 04:21:51

1.先创建一个UIImageView.

- (void)createImageView {

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0,0.0, frame.size.width, frame.size.height)];

    imageView.image = [UIImageimageNamed:@"image1.png"];

    self.myImageView = imageView;

    [self addSubview:imageView];

}

问题:方法一二是让iamgeview 循环旋转角度,如果把imageview 放在tableviewcell上边,每次刷新tableview,imageview 的旋转速度会加倍;没有去做相应的处理,而是直接利用另一个旋转方法三

方法三:

 CABasicAnimation *animation =  [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
//默认是顺时针效果,若将fromValue和toValue的值互换,则为逆时针效果
animation.fromValue = [NSNumber numberWithFloat:.f];
animation.toValue = [NSNumber numberWithFloat: M_PI *];
animation.duration = ;
animation.autoreverses = NO;
animation.fillMode =kCAFillModeForwards;
animation.repeatCount = MAXFLOAT; //如果这里想设置成一直自旋转,可以设置为MAXFLOAT,否则设置具体的数值则代表执行多少次
[self.imageView1.layer addAnimation:animation forKey:nil];

//方法一:

- (void)buttonAction:(id)sender {

    angle = 0.0;

    [selfstartAnimation];

}

- (void)startAnimation

{

    [UIView beginAnimations:nilcontext:nil];

    [UIView setAnimationDuration:0.01];

    [UIView setAnimationDelegate:self];

    [UIView setAnimationDidStopSelector:@selector(endAnimation)];

    self.myImageView.transform = CGAffineTransformMakeRotation(angle * (M_PI /180.0f));

    [UIView commitAnimations];

}

-(void)endAnimation

{

    angle += ;

    [selfstartAnimation];

}

方法一

//方法二:(使用Block)

- (void)startAnimation

{

    CGAffineTransform endAngle = CGAffineTransformMakeRotation(angle * (M_PI /180.0f));

    [UIView animateWithDuration:.01delay: options:UIViewAnimationOptionCurveLinearanimations:^{

        self.myImageView.transform = endAngle;

    } completion:^(BOOL finished) {

        angle += ;

        [selfstartAnimation];        

    }];

}