动画一组UIViews

时间:2011-10-06 21:45:18

标签: objective-c arrays animation uiview calayer

我有一组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秒左右后启动下一个动画?任何帮助将不胜感激!

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

使用第二个参数。在你的循环中,调用该函数,将每个递增的数字传递给该参数。