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

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:0.f];
    animation.toValue =  [NSNumber numberWithFloat: M_PI *2];
    animation.duration  = 1;
    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 += 15;

    [selfstartAnimation];

}
方法一

 

 

//方法二:(使用Block)

- (void)startAnimation

{

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

    [UIView animateWithDuration:0.01delay:0 options:UIViewAnimationOptionCurveLinearanimations:^{

        self.myImageView.transform = endAngle;

    } completion:^(BOOL finished) {

        angle += 15;

        [selfstartAnimation];        

    }];

}

 

posted @ 2017-03-24 13:24  徐家汇  阅读(6467)  评论(0编辑  收藏  举报