2013-08-21 54 views
2

我有一個UILabel它將包含一個需要動畫的數字以從零增加到給定值。該標籤被放置在UITableView內,並且是UITableViewCell的子視圖。由於某些奇怪的原因,我的數字在視圖滾動時不會生成動畫。如果我暫停滾動數字動畫。爲什麼是這樣以及如何解決它?滾動ios時的數字增量動畫

方法1,它失敗:

NSInteger fromValue = 0; 
NSInteger toValue = 57; //In this example toValue has to be greater than fromValue 
NSString *suffix = @"K"; 
NSTimeInterval interval = 0.016; //Adjust for different animation speed 
NSTimeInterval delay = 0.0; 
for (float i = fromValue; i <= toValue; i++) 
{ 
    NSString *labelText = [NSString stringWithFormat:@"%0.3f%@", i, suffix]; 
    [numberLabel1 performSelector:@selector(setText:) withObject:labelText afterDelay:delay]; 
    delay += interval; 
} 

第二個是使用UICountingLabel from Giuthub它提供了相同的功能,但也不起作用。爲什麼?怎麼修?我的代碼使用它看起來像:

UICountingLabel *numberLabel1 = [[UICountingLabel alloc] initWithFrame:CGRectMake(0, 105, winSize.width/2, 40)]; //winSize is 
numberLabel1.textAlignment = NSTextAlignmentCenter; 
numberLabel1.method = UILabelCountingMethodLinear; 
numberLabel1.format = @"%.3f"; 
[numberLabel1 countFrom:0 to:num1.floatValue withDuration:countDuration]; 

任何其他方式如何使這個「勾」?我需要這個動畫能夠非常糟糕地滾動。

乾杯1月

回答

3

UICountingLabel方法起作用。問題是定時器所連接的運行循環模式是默認的運行循環模式,並且在滾動過程中它不運行。如果您修改定時器,使其位於NSRunLoopCommonModes中,則它將觸發並且標籤將在滾動期間更新。


137 Line在UICountingLabel.m,與NSRunLoopCommonModesNSDefaultRunLoopMode替換。

+0

你能解釋一下怎麼做嗎? – Majster