【问题标题】:After dismissModalViewController called, problems with CALayer animation调用dismissModalViewController后,CALayer动画出现问题
【发布时间】:2011-09-05 11:00:39
【问题描述】:

我有一个带有动画的视图控制器,它在视图控制器出现时运行。 每次视图控制器出现时,动画都应该重置到某个位置并再次重播动画。 viewWillAppear 重置动画子视图的位置。 viewDidAppear 运行 CALayer 动画。 第一次效果很好,但是当我展示一个模态视图控制器并关闭它时,动画视图控制器的子视图会在动画的最终位置出现一小段时间,然后它会重置到它开始动画的原始位置。 我确保在应该重置动画子视图位置的位置调用 viewWillAppear。

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

【问题讨论】:

  • 我很困惑。您表示当您关闭视图控制器时会出现问题,但只讨论在视图出现时运行的代码。
  • 可以显示动画代码吗?

标签: iphone objective-c ios calayer modalviewcontroller


【解决方案1】:

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

您必须解决此问题的一种可能性是重置viewDidLoad 中的动画,一旦视图加载到内存中就会调用该动画(如果视图未卸载则仅调用一次)。确实,这个方法是用来完成视图初始化的,看起来是放置动画的reset的正确位置。

如果此解决方案不适合您的应用(我不知道您在做什么)并且您需要在 viewWillAppear 中进行重置,您可以考虑在模态时在控制器中设置一个标志视图已显示,因此您知道,下次您的控制器收到 viewWillAppear 时,它会在模态视图关闭之后出现,并且您不进行重置。我不是建议你这样做,这很老套,也不是很有弹性,只是说,如果你不能接受其他解决方案。更好地重新设计您的应用程序,以便在viewWillAppear 中不需要重置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多