我有一个UILabel
,其中包含一个需要动画的数字,以便从零增加到给定值。标签位于UITableView
内,是UITableViewCell
的子视图。出于一些奇怪的原因,我的数字在视图滚动时不会生成动画。如果我暂停滚动数字动画。为什么会如此以及如何解决?
失败的方法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];
如何使这个“滴答”的任何其他方式?我需要这个动画能够非常糟糕地滚动。
干杯,Jan。
答案 0 :(得分:3)
您的UICountingLabel
方法可行。问题是计时器附加到的运行循环模式是默认的运行循环模式,并且在滚动过程中它不会运行。如果您修改计时器,使其位于NSRunLoopCommonModes
,那么它将触发,标签将在滚动期间更新。
UICountingLabel.m中的第137行,将NSDefaultRunLoopMode
替换为NSRunLoopCommonModes
。