我尝试使用以下代码递增百分比视图:
// 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
行为?
答案 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方法并从那里调用动画),但不要使用动画块来增加模型值(进度)。