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