通过CADisplayLink实现图片自转动画效果

什么是CADisplayLink

点进CADisplayLink的头文件我们能看到,其实他的方法并不多,而且他的功能很单一,就是作为一个定时器的存在。

不过既然苹果专门提供了这么一个类,就一定是有他的存在意义的。他的优势就在于他的执行频率是根据设备屏幕的刷新频率来计算的。换句话讲,他也是时间间隔最准确的定时器。

使用实例

定义属性

@interface ViewController ()
@property(strong,nonatomic) CADisplayLink *link;
@property(strong,nonatomic) UIImageView *imageView;
@end
- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.imageView=[[UIImageView alloc] initWithFrame:CGRectMake(160, 160, 50, 50)];![效果图.gif](http://upload-images.jianshu.io/upload_images/9517141-14a94b87d5b5a105.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    self.imageView.image=[UIImage imageNamed:@"loading_blu"];
    [self.view addSubview:self.imageView];
    [self.link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
}

- (CADisplayLink *)link
{
    if (!_link) {
        self.link = [CADisplayLink displayLinkWithTarget:self selector:@selector(up)];
    }
    return _link;
}

- (void)up
{
    // 规定时间内转动的角度 == 时间 * 速度
    CGFloat ang = self.link.duration * 5;
    self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, ang);
}

效果图.gif

你可能感兴趣的:(通过CADisplayLink实现图片自转动画效果)