什么是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);
}