【问题标题】:Animation after Dismissing a Modal View Does Not Work关闭模态视图后的动画不起作用
【发布时间】:2014-12-09 19:22:00
【问题描述】:

我正在尝试运行下面的动画——它在我杀死一个模态视图控制器并返回到我的主屏幕后立即触发。我正在为 UIImageView (activeThumbnail) 设置动画,以提供模态视图缩回到屏幕上某个位置的错觉。动画完成后,我通过将其 alpha 设置为 0 来使缩略图不可见。看起来很简单,我以前使用过这种动画一百次。

问题是,这一次,当我将 alpha 变化线放在“完成”块中时,动画不会触发;它只是直接跳到完成的块并立即使我的 UIImageView 变暗。有趣的是,当我注释掉该行时,动画按预期运行。这是提到的动画块:

[self dismissViewControllerAnimated:NO completion:nil];

[UIView animateWithDuration:0.4f
                      delay:0.0f
                    options: UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     activeThumbnail.frame = CGRectMake(activeThumbnailFrame.x, activeThumbnailFrame.y, 60.0f, 60.0f);
                 }
                 completion:^(BOOL finished)
                    {
                        //activeThumbnail.image = nil;
                        //activeThumbnail.alpha = 0.0f;
                    }];

有人可以指出我在这里缺少什么吗?

更新:我做了一些实验,发现问题出在关闭模态视图控制器的那一行。它以某种方式与动画的完成块混淆了。当我将动画块移动到单独的方法并从解除命令的完成块中调用它时,它会按预期运行:

completion:^{[self animationMethod];}

这样做的问题是,即使动画设置为 NO,解雇行的完成块也需要大约两秒钟才能触发。我仍然对如何解决这个问题感到困惑。

【问题讨论】:

  • 愚蠢的问题:您是否尝试将 NSLogs 添加到完成和动画中以查看它是否实际上是无序触发?这不会解决问题,但可能有助于解决问题。
  • 其实我没有。今天回家我会试试的。
  • 我用新信息更新了原始帖子。顺便说一句,我检查了这些部分确实触发了。问题在于模式视图的消除。

标签: ios objective-c animation uiimageview animatewithduration


【解决方案1】:

如果您使用故事板,您应该考虑使用类似this example

如果您不使用情节提要,那么您可以通过将父 viewController 设置为子 viewController 的属性来调整链接文章中的示例,并尝试以与展开动画相同的方式执行动画用过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多