我有一组UIViews,我使用以下代码进行动画处理:
for (int i = 0; i<(int)viewArray.count; i++) {
UIView *view = [viewArray objectAtIndex:i];
CALayer *layer = view.layer;
//animate the layer
}
我的问题是,是否有任何方法可以在每个动画之间产生延迟,例如,它会为数组中的一个UIView设置动画,并在0.2秒左右后启动下一个动画?任何帮助将不胜感激!
答案 0 :(得分:4)
您可能需要尝试以下
float timeDelay = 0.2
float duration = YOUR_DURATION
for (int i = 0; i<(int)viewArray.count; i++) {
UIView *view = [viewArray objectAtIndex:i];
//animate the layer
[UIView animateWithDuration:duration delay:(i+1)*timeDelay
options: {Check UIView Class Reference on developer.apple.com}
animations:^{
[view.layer fantastic animation here];
} completion^(BOOL finised){
if(finished){
//Leave blank if nothing, good practice to implement debuging here or post animation processes here (like removing a subview from a super)
}
}];
}
请注意,如果你发送你的程序背景,它可能会破坏你的动画,所以请确保你在你的app app中调用这个方法代表:
- (void)applicationWillEnterForeground:(UIApplication *)application;
希望有所帮助
答案 1 :(得分:0)
使用这个人:
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
使用第二个参数。在你的循环中,调用该函数,将每个递增的数字传递给该参数。