作用:一個(gè)計(jì)時(shí)器惭蹂,根據(jù)屏幕刷新頻率周期性執(zhí)行某種操作各吨。與NSTimer類似胁住。多用應(yīng)用于跟顯示有關(guān)的操作筹吐,如core Animation
相關(guān)方法:
//創(chuàng)建對象
+ (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel;
//將計(jì)時(shí)器加入到runloop中猛频,必須加入到到runloop中才有作用
- (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;
//從runloop中移除定時(shí)器
- (void)removeFromRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;
注:
NSRunLoopMode模式有:
NSDefaultRunLoopMode--默認(rèn)模式狮崩,在該模式下操作可能被阻斷蛛勉,不被執(zhí)行。如果在主線程中睦柴,scrollview滑動(dòng)時(shí)诽凌,就會(huì)臨時(shí)切換到其他私有的模式(如UITrackingRunLoopMode)。從而displayLink不被執(zhí)行,不滑動(dòng)時(shí)才恢復(fù)
NSRunLoopCommonModes--NSDefaultRunLoopMode坦敌,NSEventTrackingRunLoopMode等的結(jié)合皿淋,在此模式下的事件不會(huì)被打斷
//銷毀定時(shí)器
- (void)invalidate;
相關(guān)屬性:
timestamp --屏幕顯示的上一幀的時(shí)間戳,是CoreAnimation使用的時(shí)間格式恬试。不同于unix時(shí)間戳
duration--兩次屏幕刷新的時(shí)間間隔窝趣。通過此可知屏幕的刷新頻率,蘋果的屏幕刷新頻率一般為60Hz(一秒刷新60次)
targetTimestamp --屏幕顯示的下一幀的時(shí)間戳
paused--是否暫停計(jì)時(shí)器
frameInterval --多少次屏幕刷新后才調(diào)用一次方法,ios10.0后被廢棄训柴。默認(rèn)刷新一次調(diào)用一次
preferredFramesPerSecond-- 一秒內(nèi)執(zhí)行多少次方法哑舒,默認(rèn)60
舉例:
//創(chuàng)建
displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(doSomething:)];
//設(shè)置調(diào)用的刷新間隔
displayLink.frameInterval = 60;
//加入到runloop中
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
//銷毀
[displayLink invalidate];
displayLink = nil;