动画UILabel值增量

时间:2014-08-01 12:26:23

标签: ios objective-c for-loop uiview nstimer

我尝试使用以下代码递增百分比视图:

// Progress
    [UIView animateWithDuration:5.0 animations:^{
        for (float percent = 0.0; percent <= 0.86; percent+=0.01) {
            NSLog(@"%f", percent);
            self.circularProgress2.progress = percent;
        }
    }];

它没有动画,直接达到最终值。我知道我可以使用NSTimer

[NSTimer scheduledTimerWithTimeInterval:0.0001 target:self selector:@selector(onLableAnimateTick:) userInfo:nil repeats:YES];

然后从被调用方法内部更改值。但是我在同一个视图上有几个条形图,所以我想使用第一个选项对我来说会更好。

如果不可能,如何在不必为每个进度条创建NSTimer和方法的情况下复制properties行为?

1 个答案:

答案 0 :(得分:1)

动画块中的所有代码都将被执行,你的情况是for循环。考虑以下情况:

[UIView animateWithDuration:5.0 animations:^{
   CGRect f = aView.frame;
   f.origin.x = 20;
   f.origin.x = 25;
   f.origin.x = 40;
   aView.frame = f;
}];

这会将视图从当前位置设置为x = 40的动画。不动画为20,然后设置为25,然后设置为40.块的结果是aViews帧origin.x应为40,无论发生什么在那之前。

如果你想以给定的间隔自动增加进度,我会说使用计时器。您仍然可以设置当前更改的动画(例如,通过覆盖Progress-view类上的setProgress方法并从那里调用动画),但不要使用动画块来增加模型值(进度)。