OGeek|极客世界-中国程序员成长平台

标题: ios - 未调用 UIView 动画完成 block [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 10:56
标题: ios - 未调用 UIView 动画完成 block

我在正在开发的应用程序中发现了一个奇怪的错误。在我进入细节之前,我会陈述我的问题是

1 - 为什么不能调用 UIView 动画完成 block

2 - 为什么 UIView 动画完成 block 会在模态视图出现后被调用?

我有一系列在 View Controller 出现后开始的 UIView 动画。他们有完成 block 。大多数情况下,动画完成 block 都会被调用。但每隔一段时间,应用就会进入完成 block 不被调用的状态。

此外,当我从当前 View Controller 模态显示新的 View Controller 时,之前未调用的动画完成 block 都会被调用。

一旦应用处于这种状态,动画完成 block 就不会再次被调用,除非我再次呈现模态视图。

我的动画 block 基本上是这样的:

 int i = 0;
 for (UIView *view in self.cellImageViews)
 {
     [UIView animateWithDuration:CELL_ANIMATION_DISMISS_DURATION
                           delayi)*CELL_ANIMATION_STAGGER_INTERVAL
                         options:UIViewAnimationOptionCurveEaseIn
                      animations:^{
                          view.transform = CGAffineTransformTranslate(view.transform, 0, CELL_ANIMATION_DISMISS_TRANSLATION);
                      } completion:^(BOOL finished) {
                         NSLog(@"Animation Completed: i:%d, finished:%d, count%d",i,finished,[self.oldCellImageViews count])
                         if(finished && (i == ([self.cellImageViews count]-1)))
                         {
                            NSLog(@"if statement passed");
                            // My completion block stuff goes here
                         } 
                       }             
         ];
        i++;
    }



Best Answer-推荐答案


尝试关注

[UIView animateWithDuration:CELL_ANIMATION_DISMISS_DURATION
                      delayi)*CELL_ANIMATION_STAGGER_INTERVAL
                    options:UIViewAnimationOptionCurveEaseIn
                 animations:^{
                     int i = 0;

                     for (UIView *view in self.cellImageViews)
                     {
                         view.transform = CGAffineTransformTranslate(view.transform, 0, CELL_ANIMATION_DISMISS_TRANSLATION);
                         i++;
                     }

                 } completion:^(BOOL finished) {
                     if(finished)
                     {
                         NSLog(@"if statement passed");
                         // My completion block stuff goes here
                     }
                 }
 ];

关于ios - 未调用 UIView 动画完成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24945017/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4