让图片转起来

2017-03-28  本文已影响70人  shushuzhen

先上一个gif图,看下效果:



在项目中很少用到动画,这个动画可以用于更新或者下载或者操作等待时的动画。
下面直接上代码:

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong) UIImageView *imageV;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 创建一个ImageView
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
    imageView.center = self.view.center;
    imageView.image = [UIImage imageNamed:@"airCon_on"];
    [self.view addSubview:imageView];
    self.imageV = imageView;
    
    // 创建一个点击按钮
    UIButton *clickBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [clickBtn setFrame:CGRectMake(0, 0, 100, 50)];
    clickBtn.center = CGPointMake(imageView.center.x, 100);
    [clickBtn setTitle:@"点这里呀" forState:UIControlStateNormal];
    clickBtn.titleLabel.font = [UIFont systemFontOfSize:20];
    [clickBtn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [clickBtn addTarget:self action:@selector(clickToRotate:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:clickBtn];

}

- (void)clickToRotate:(UIButton *)btn{

    if (btn.selected) {
        // 启动旋转动画
       [self rotate360DegreeWithView:self.imageV];
    }else{
        // 移除旋转动画
        [self removreAnimation];
    }
    btn.selected = !btn.selected;
}
// 旋转动画
- (void)rotate360DegreeWithView:(UIView *)view{


    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
    animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
    
    // 围绕Z轴旋转,垂直于屏幕
    animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0.0, 0.0, 1.0)];
    // 旋转持续时间
    animation.duration = 0.5;
    // 旋转效果累计,先转180度,接着再旋转180度,从而实现360度旋转
    animation.cumulative = YES;
    // 旋转次数累计
    animation.repeatCount = 1000;
    view.tag = 1000;
    // 动画要加到layer上
    [view.layer addAnimation:animation forKey:nil];
}
// 移除动画
- (void)removreAnimation{
  
    UIView *view = [self.view viewWithTag:1000];
    [view.layer removeAllAnimations];
}
@end

动画要加到view的layer上面

上一篇下一篇

猜你喜欢

热点阅读