2013-08-21 3 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]; 

Любой другой способ, как сделать этот «тик»? Мне нужна эта анимация, чтобы иметь возможность прокручивать очень плохо.

Cheers,

января

ответ

3

Ваш метод UICountingLabel может работать. Проблема заключается в том, что режим цикла запуска, к которому подключен таймер, является режимом цикла запуска по умолчанию, и он не запускается во время прокрутки. Если вы измените таймер так, чтобы он находился в NSRunLoopCommonModes, он загорится, и метка будет обновляться во время прокрутки.


Line 137 в UICountingLabel.m, замените NSDefaultRunLoopModeNSRunLoopCommonModes с.

+0

Можете ли вы объяснить, как это сделать, пожалуйста? – Majster