使用CADisplayLink寫秒錶

2021-09-23 21:50:02 字數 1771 閱讀 9944

使用cadisplaylink寫秒錶

效果:

原始碼:stopwatch.h 與 stopwatch.m

//

// stopwatch.h

// showtime

//// created by youxianming on 14-10-16.

//#import @protocol stopwatchdelegate - (void)stopwatchdate:(nsdate *)date;

@end

// 說明:此秒錶類是基於cadisplaylink所寫,每一幀重新整理一次

@inte***ce stopwatch : nsobject

@property (nonatomic, assign) iddelegate;

- (void)start; // 開始

- (void)stop; // 停止

- (void)reset; // 復位

- (nsdate *)gaindate; // 獲取時間(只有在start的時候獲取時間才有意義,stop之後返回值為0)

@end

//

// stopwatch.m

// showtime

//// created by youxianming on 14-10-16.

//#import "stopwatch.h"

@inte***ce stopwatch ()

@property (nonatomic, strong) cadisplaylink *countdowntimer;

@property (nonatomic, strong) nsdate *startdate;

@property (nonatomic, strong) nsdate *pauseddate;

@property (nonatomic, assign) bool startflag;

@end

@implementation stopwatch

- (void)start

if (_countdowntimer == nil)

if(_pauseddate != nil)

_countdowntimer = [cadisplaylink displaylinkwithtarget:self selector:@selector(timerrunevent)];

_countdowntimer.frameinterval = 1;

[_countdowntimer addtorunloop:[nsrunloop currentrunloop] formode:nsrunloopcommonmodes];

}}- (void)stop

}- (void)reset

}- (nsdate *)gaindate else

}- (void)timerrunevent

}- (void)dealloc

@end

注意:富文字顯示的秒錶並不是這個類的功能而已:)

使用CADisplayLink實現果凍效果動畫

cadisplaylink是什麼 比起nstimer,cadisplaylink可以確保系統渲染每一幀的時候我們的方法都被呼叫,從而保證了動畫的流暢性。demo 我們希望在animate乙個view的時候給它加上果凍效果 我們會把所有的邏輯都封裝到乙個blockview裡,在這個view裡首先申明乙...

Swift3 CADisplayLink簡單用法

1 定義屬性 var displaylinktimer cadisplaylink?nil 2 init displaylinktimer cadisplaylink target self,selector selector self.handlepalettedata displaylinkti...

CADisplayLink定時器(平滑)

1.建立定時器 cadisplaylink link cadisplaylink displaylinkwithtatget self selector selector changy 要想讓cadisplaylink工作,必須得把它新增到主執行迴圈中 每一次螢幕重新整理的時候就會呼叫指定的方法 螢...