解除模态视图后的动画不起作用

时间:2014-12-09 19:22:00

标签: ios objective-c animation uiimageview animatewithduration

我正在尝试运行下面的动画 - 它在我杀死一个模态视图控制器并返回到我的主屏幕后立即触发。我正在制作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;
                    }];

有人可以指出我在这里缺少的东西吗?

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

completion:^{[self animationMethod];}

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

1 个答案:

答案 0 :(得分:0)

如果您使用的是故事板,则应考虑this example

之类的内容

如果您没有使用故事板,那么您可以通过将父viewController设置为子项上的属性来调整链接文章中的示例,并尝试以与展开动画相同的方式执行动画。使用