2011-08-30 97 views
0

我有一個值爲0的UILabel,以及一個值爲300的int。我如何使用NSTimer在2秒內使UILabel從0變爲300?我希望它看起來像是逐漸增加的。如何增加UILabel?

在此先感謝!

回答

0

我想出了一個不同的解決方案:

我知道我想要的「計數」到最後3秒......這是60 * 0.05 ...基本上定時器擊中法60次得到到總金額。

addUpAb = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(addUpTimer) userInfo:nil repeats:YES]; 

-(void)addUpTimer { 
    int addNo = abTOT/60;  
    abInt += addNo; 

    abductionCount.text = [NSString stringWithFormat:@"%d", abInt]; 

    if(abInt >= abTOT) { 
     [addUpAb invalidate]; 
     abCount.text = [NSString stringWithFormat:@"%d", abTOT]; 
     } 
    } 
+0

您應該使用CADisplayLink而不是NSTimers來執行動畫。 –

+0

感謝Marcelo ...對我來說工作正常(性能明智)..你推薦CADisplayLink的原因是什麼? –

+0

它會將動畫與顯示同步,從而產生更流暢的動畫。在你的情況下,如果有事情發生(例如:電話,某些背景),NSTimer不會在0.05秒後觸發。 (我只是注意到阿列克謝說了同樣的話,嘿) –

1

其實NSTimer精度約爲50-100毫秒,所以它不能如你所願那麼順利。但是您可以將計時器計劃爲0.05,並測量從一開始就真正流逝了多少時間。使用後

value = timePassedInSeconds*300/2; 
NSString* label = [NSString stringWithFormat:@"%d", value]; 

如果這樣不夠流暢嘗試使用display link而不是NSTimer

+0

謝謝阿列克謝...我如何衡量已經過了多少時間? –

0

你想做什麼?你想展示某種點數/分數動畫嗎?如果你按照你想要的時間間隔進行數學計算並且啓動計時器,你可以做你想做的事,但是我懷疑你會得到你想要的。您可能需要查看UIImageView併爲其提供一組圖像以通過繪製來動畫或執行動畫。

+0

我實際上顯示了一些東西......但想用「數數」來看它。 –