Quartz2D繪制時定時器要怎么選擇呢?我們知道計時器常用有兩種:
NSTimer定時器
[NSTimer scheduledTimerWithTimeInterval:0.025 target:self selector:@selector(update) userInfo:nil repeats:YES];
//如果我們使用NSTimer定時器. 設(shè)置的執(zhí)?行時間為0.025秒, 假如屏幕刷新時間為0.035.中間就會等待0.010//繪制圖形的時候不建議使用該方法
CADisplayLink定時器
- 補充知識:
- drawRect方法是在view將要顯示,已經(jīng)顯示之間調(diào)用的
- drawRect方法是不能手動調(diào)?,因為在drawRect方法中才能獲取跟View相關(guān)聯(lián)的上下文, 系統(tǒng)在調(diào)用DrawRect方法時,會?動幫你創(chuàng)建一個跟View相關(guān)聯(lián)的上下文,并且傳遞給它.
- 解決辦法:想要重繪,調(diào)?[self setNeedsDisplay]; 告訴系統(tǒng)重新繪制View,系統(tǒng)就會自動幫你調(diào)用drawRect方法,系統(tǒng)在調(diào)用drawRect方法,它會幫你創(chuàng)建上下文
//setNeedsDisplay:會調(diào)用drawRect,但是它并不是立馬調(diào)用的,只是設(shè)置一個標志.當下一次屏幕刷新的時候.
//我們在繪制的時候使用定時器最好使用CADisplayLink. 創(chuàng)建CADisplayLink定時器 這個定時器?法它是當每次屏幕刷新的時候調(diào)?(屏幕每一秒刷新60次);//使?用CADisplayLink不需要考慮時間間隔.
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)];
//要讓它工作, 必須得要把定時器添加到主運行循環(huán)
[link addToRunLoop:[NSRunLoop mainRunLoop]forMode:NSDefaultRunLoopMode];