我想在我的应用中添加一个小型加载器动画。我之前用CGAnimations做过重复动画没有问题,这次我是采用块方法。
我正在做一个小测试,但可以重复以下代码:
- (void) startLoading {
__block int count = 0;
[UIView animateWithDuration:0.4
delay: 0.0
options: UIViewAnimationOptionRepeat
animations:^{
count++;
}
completion:^(BOOL finished){
if (count > 5)
count = 0;
NSLog(@"%d", count);
}];
}
- (void) stopLoading {
}
以上内容仅触发完成块一次,不重复。
如何让块重复以使计数递增?
如果我正常工作并将动画放入重复块中, stopLoading的内容:再次停止动画?
感谢您提供的任何帮助:)
答案 0 :(得分:5)
这是一个有限的重复动画:
- (void) animate: (int) count {
CGPoint origC = v.center;
void (^anim) (void) = ^{
v.center = CGPointMake(100,100);
};
void (^after) (BOOL) = ^(BOOL finished) {
v.center = origC;
if (count)
[self animate:count-1];
};
int opts = UIViewAnimationOptionAutoreverse;
[UIView animateWithDuration:1 delay:0 options:opts
animations:anim completion:after];
}
这里有一个递归,所以我们不想过火或者我们的内存不足,但是如果我们限制我们的数量(在你的例子中它是5)我们应该没问题。