我有一个带有动画的视图控制器,它在视图控制器出现时运行。 每次出现视图控制器时,动画都应重置到某个位置并再次重放动画。 viewWillAppear重置动画子视图的位置。 viewDidAppear运行CALayer动画。 它第一次运行良好,但是当我呈现模态视图控制器并将其关闭时,动画视图控制器的子视图在动画的最终位置出现一小段时间,然后它重置到开始动画的原始位置。 我确保调用viewWillAppear,它应该重置动画子视图的位置。
欢迎任何建议。 谢谢你的进步。
答案 0 :(得分:0)
我认为你的直觉是正确的:当您关闭模态视图控制器时,底层视图会再次显示,并且控制器会收到viewWillAppear
/ viewDidAppear
条消息。
您必须解决此问题的一种可能性是重置viewDidLoad
中的动画,一旦视图加载到内存中就会调用该动画(如果未卸载视图,则调用一次)。实际上,此方法用于完成视图初始化,并且似乎是放置动画的reset
的正确位置。
如果此解决方案不适合您的应用(我不知道您在整体上做了什么)并且您需要在viewWillAppear
中进行重置,您可以考虑在控制器中设置一个标志显示模态视图,因此您知道,下次控制器收到viewWillAppear
时,它会在解除模态视图后出现并且您不进行重置。我不是建议你这样做,这是非常hacky而且不是很有弹性,只是说,如果你不能接受其他解决方案。更好地重新设计您的应用,以便viewWillAppear
中无需重置。