2011-12-12 79 views
0

我在寫一些應用程序。我在那裏有一些自定義視圖。在視圖中有一個調用「setNeedsDisplayInRect」方法的計時器。我需要該計時器對動畫的目的非常冒犯(沒有非常複雜的動畫)。我已經設置了定時器的值:0.0001。這個價值不是太大嗎?該應用程序正常工作。什麼是NSTimer對象的最佳值?

+0

你有沒有看過動畫,以每秒十萬幀的速度渲染?因爲這正是你目前所要做的......幸運的是,runloop和繪圖系統都不允許你這麼做,所以你只是在燒製你正在嘗試的處理週期的一小部分**。除此之外,請參閱rob's或Randall的答案,並且在螺絲刀適當的情況下不要使用錘子。 – danyowdee

+0

那是對的))想過那個,改成1.0/60.0 – Nikita

回答

5

請勿爲此使用NSTimer。使用CADisplayLink。它將以設備的最佳速率運行。

設置它是這樣的:

self.displayLink = [self.view.window.screen displayLinkWithTarget:self selector:@selector(setNeedsDisplayForMyView)]; 
[self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

,並定義一個方法setNeedsDisplayForMyView

- (void)setNeedsDisplayForMyView 
{ 
    [self.view setNeedsDisplayInRect:self.dirtyRect]; 
} 
+0

很不錯,這個班 –

0

如果你正在做動畫你試過核心動畫或動畫的UIView?這可能會比使用計時器自己動畫更容易一些。

相關問題