如何在ios中延迟执行动画序列

如何在ios中延迟执行动画序列,ios,objective-c,uianimation,Ios,Objective C,Uianimation,我们有七个按钮,点击其中的任何一个,我需要对其余的按钮“按顺序”执行动画。 目前,我在for循环中使用以下代码,但动画是在所有按钮上同时完成的 [UIView beginAnimations: @"Fade In" context:nil]; button.alpha = 0; [UIView setAnimationDelay:0]; [button setTitle:@"helloworld" forState:UIControlStateNormal]; [UIView set

我们有七个按钮,点击其中的任何一个,我需要对其余的按钮“按顺序”执行动画。 目前,我在for循环中使用以下代码,但动画是在所有按钮上同时完成的

 [UIView beginAnimations: @"Fade In" context:nil];
 button.alpha = 0;
 [UIView setAnimationDelay:0];
 [button setTitle:@"helloworld"  forState:UIControlStateNormal];
 [UIView setAnimationDuration:0];
 button.alpha = 1;
 [UIView commitAnimations]; 

试试这个循环

for(int btnIndex = 0; btnIndex < 7; btnIndex++) {

  UIButton *button = [buttons objectAtIndex:0]; //get button reference from an array

  [UIView beginAnimations: @"Fade In" context:nil];
button.alpha = 0;
  [UIView setAnimationDelay:(0.1 * btnIndex)];
  [button setTitle:@"helloworld"  forState:UIControlStateNormal];
  [UIView setAnimationDuration:0.1];
button.alpha = 1;
  [UIView commitAnimations];
}
for(int-btnIndex=0;btnIndex<7;btnIndex++){
UIButton*button=[buttons objectAtIndex:0];//从数组中获取按钮引用
[UIView beginAnimations:@“淡入”上下文:无];
button.alpha=0;
[UIView设置动画延迟:(0.1*btnIndex)];
[按钮设置标题:@“helloworld”用于状态:UIControlStateNormal];
[UIView设置动画持续时间:0.1];
button.alpha=1;
[UIView委员会];
}

在for循环中尝试这件事

for(int btnIndex = 0; btnIndex < 7; btnIndex++) {

  UIButton *button = [buttons objectAtIndex:0]; //get button reference from an array

  [UIView beginAnimations: @"Fade In" context:nil];
button.alpha = 0;
  [UIView setAnimationDelay:(0.1 * btnIndex)];
  [button setTitle:@"helloworld"  forState:UIControlStateNormal];
  [UIView setAnimationDuration:0.1];
button.alpha = 1;
  [UIView commitAnimations];
}
for(int-btnIndex=0;btnIndex<7;btnIndex++){
UIButton*button=[buttons objectAtIndex:0];//从数组中获取按钮引用
[UIView beginAnimations:@“淡入”上下文:无];
button.alpha=0;
[UIView设置动画延迟:(0.1*btnIndex)];
[按钮设置标题:@“helloworld”用于状态:UIControlStateNormal];
[UIView设置动画持续时间:0.1];
button.alpha=1;
[UIView委员会];
}

您不应该再使用beginAnimations:context:了。引用苹果的文档:

iOS 4.0及更高版本不鼓励使用此方法。你应该使用 使用基于块的动画方法来指定动画

改用新的animateWithDuration方法族。特别是
animateWithDuration:delay:options:animations:completion:
。该方法采用延迟参数。可以发出一系列动画命令,每个命令都具有较大的延迟值。还可以通过使每个动画的完成块触发下一个动画来链接动画

编辑:这里有一个链接,指向一篇文章,我在这里展示了使用完成方法触发一系列动画的代码:


您不应该再使用beginAnimations:context:了。引用苹果的文档:

iOS 4.0及更高版本不鼓励使用此方法。你应该使用 使用基于块的动画方法来指定动画

改用新的animateWithDuration方法族。特别是
animateWithDuration:delay:options:animations:completion:
。该方法采用延迟参数。可以发出一系列动画命令,每个命令都具有较大的延迟值。还可以通过使每个动画的完成块触发下一个动画来链接动画

编辑:这里有一个链接,指向一篇文章,我在这里展示了使用完成方法触发一系列动画的代码:


更改animationdelay及其持续时间更改animationdelay及其持续时间基于时间块的UIView动画的完成块在中断时不会调用,例如用户离开应用程序等。基于块的UIView动画的完成块在中断时不会调用,例如用户离开应用程序等。