2

私は、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;
}

2 つ目は、同じ機能を提供するが機能しない Giuthub の UICountingLabelを使用することでした。なんで?直し方?それを使用する私のコードは次のようになります。

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];

この「ダニ」を作る方法の他の方法はありますか?このアニメーションが本当にひどくスクロールできるようにする必要があります。

乾杯、ジャン。

4

1 に答える 1

3

あなたのUICountingLabel方法は機能します。問題は、タイマーが接続されている実行ループ モードがデフォルトの実行ループ モードであり、スクロールの進行中は実行されないことです。にあるようにタイマーを変更すると、タイマーが起動し、NSRunLoopCommonModesスクロール中にラベルが更新されます。


UICountingLabel.m の 137 行目を に置き換えNSDefaultRunLoopModeますNSRunLoopCommonModes

于 2013-08-21T19:53:15.603 に答える