• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 未调用 UIView 动画完成 block

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:56:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap