iOS中的CADisplayLink定時器

iOS中的CADisplayLink定時器

    說到定時器,在iOS中最經常使用的爲NSTimer類,其實CADisplayLink類在某些場景下使用,要比NSTimer類更加適合。首先CADisplayLink也是一種定時器,而且其和屏幕的刷新率始終保持一致(不少時候會使用CADisplayLink來檢測屏幕的幀率)。因爲CADisplayLink的這種特性,使用它來實現流暢的動畫效果很是合適。函數

    CADisplayLink類很是簡單,解析以下:oop

//建立CADisplayLink對象 
/*
須要注意 定時器對象建立後 並不會立刻執行 須要添加到runloop中
*/
+ (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel;
//將當前定時器對象加入一個RunLoop中
- (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;
//將當前定時器對象從一個RunLoop中移除 若是這個Runloop是定時器所註冊的最後一個  移除後定時器將被釋放
- (void)removeFromRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode;
//將定時器失效掉 調用這個函數後 會將定時器從全部註冊的Runloop中移除
- (void)invalidate;
//當前時間戳
@property(readonly, nonatomic) CFTimeInterval timestamp;
//距離上次執行所間隔的時間
@property(readonly, nonatomic) CFTimeInterval duration;
//預計下次執行的時間戳
@property(readonly, nonatomic) CFTimeInterval targetTimestamp;
//設置是否暫停
@property(getter=isPaused, nonatomic) BOOL paused;
//設置預期的每秒執行幀數 例如設置爲1 則以每秒一次的速率執行
@property(nonatomic) NSInteger preferredFramesPerSecond CA_AVAILABLE_IOS_STARTING(10.0, 10.0, 3.0);
//同上 
@property(nonatomic) NSInteger frameInterval
  CA_AVAILABLE_BUT_DEPRECATED_IOS (3.1, 10.0, 9.0, 10.0, 2.0, 3.0, "use preferredFramesPerSecond");

個人博客即將搬運同步至騰訊雲+社區,邀請你們一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=29qwh7m53g4kc動畫

相關文章
相關標籤/搜索