2011-05-31 70 views
0

我有一个视图控制器与视图控制器出现时运行的动画。 每次出现视图控制器时,动画应重置到某个位置并重新播放动画。 viewWillAppear重置动画子视图的位置。 viewDidAppear运行CALayer动画。 它首次运行良好,但是当我呈现模态视图控制器并将其解除时,动画视图控制器的子视图会在动画的最终位置出现一小段时间,然后重置到开始动画的原始位置。 我确定viewWillAppear被调用,它应该重置动画子视图的位置。dismissModalViewController调用后,与CALayer动画问题

欢迎任何建议。 感谢您的提前。

+0

我很困惑。您指出当您关闭视图控制器时发生问题,但仅讨论视图出现时运行的代码。 – ax123man 2011-05-31 12:23:29

+0

你可以显示动画代码吗? – 2011-05-31 12:36:30

回答

0

我认为你的直觉是正确的:当你关闭模态视图控制器时,底层视图再次显示,它控制器收到消息viewWillAppear/viewDidAppear

您必须解决这个问题的一个可能性是重置viewDidLoad中的动画,一旦视图加载到内存中,该动画将被调用(如果视图未被卸载,则只调用一次)。确实,这种方法用于完成视图初始化,并且似乎是将动画放置在哪里的正确位置。

如果这个解决方案不适合你的应用(我不知道你在做什么)你需要在viewWillAppear中重置,你可以考虑在你的控制器中设置一个标志,当模态视图显示,所以你知道,下一次你的控制器收到viewWillAppear,它是在模态视图关闭之后发生的,并且你没有进行重置。我并不是建议你这样做,这很不好,不够灵活,只是说,如果你不能接受另一种解决方案。更好地重新设计您的应用程序,以便在viewWillAppear中不需要重置。