通过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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容