嵌套的UIVIew animateWithDuration不尊重完成

时间:2013-02-28 16:29:33

标签: ios uiview

我想做一些图形元素消失,移动背景图像,然后会出现新的图像元素。问题是当背景移动时,在背景移动动画完成之前出现新的背景。 我没有在相关问题中看到一个好的答案,所以我将不胜感激任何帮助。  伪代码:

-(void)method1 {
[UIView animateWithDuration:0.6
                      delay:0.0 options:UIViewAnimationOptionCurveEaseIn
                 animations:^{
                     self.setThisOne.hidden = YES;
                     self.setThisAnother.hidden = YES;
                 }completion:^(BOOL finished) {
                     [UIView animateWithDuration:0.6
                                           delay:0.3
                                         options: UIViewAnimationOptionCurveEaseIn
                                      animations:^{ self.background.frame = myFrame; //Move background image
                                      } completion:^(BOOL finished){
                                          if (finished) {
                                              [self method2];
                                          }
                                      }
                      ];
                 }];

}

-(void)method2 {
    [UIView animateWithDuration:0.2
                      delay:0.3
                    options: UIViewAnimationOptionBeginFromCurrentState
                 animations:^{
                     self.aButtonsAppear.hidden = NO;
                     self.moreElementsApeear.hidden = NO
                 } completion:nil];

}

2 个答案:

答案 0 :(得分:6)

.hidden可能不具有动画效果,但.alpha是。在动画中使用.alpha来控制可见性。

答案 1 :(得分:0)

你现在可能已经找到了一个解决方案,但这里有一个完整块的问题。我使用了-animateWithDuration:animations:completion:方法但是没有调用完成,因为我认为我正在执行另一个中断动画流的动作。在我的情况下,一遍又一遍地调用相同的动画。完成块时要小心。我仍然不完全依赖它们。