【问题标题】:modal view controller animates on state restoration模态视图控制器在状态恢复时动画
【发布时间】:2016-08-22 11:51:47
【问题描述】:

对于带有拆分视图控制器的通用应用程序的状态恢复,我遇到了一个奇怪的问题。

奇怪的是,我使用 Storyboard 和 segues 以及所有相关视图控制器的恢复标识符以非常标准的方式做事。实际上没有任何代码,因为逻辑在情节提要中,minimal XCode project 显示了这一点。

问题在于设置屏幕以模态方式显示为从拆分视图控制器呈现的表单。我的视图控制器层次结构最终是正确的,但转换并没有真正意义。由于某种原因,状态恢复使模态控制器动画到位。

由于屏幕以上次运行应用程序时的屏幕截图开始,并且设置控制器已经存在,因此动画只是视觉噪音。

我尝试在交互输入设置时禁用segue上的动画,但是当状态恢复做同样的事情时,动画就在那里。

避免这种情况的标准方法是什么?

【问题讨论】:

    标签: ios state-restoration


    【解决方案1】:

    application(_:willFinishLaunchingWithOptions:) 中调用self.window?.makeKeyAndVisible() 为我解决了这个问题。

    更多信息在docs:

    重要

    如果您的应用依赖状态恢复机制来恢复其 视图控制器,总是通过这个方法显示你的应用程序的窗口。做 不在您的应用程序中显示窗口 application:didFinishLaunchingWithOptions: 方法。调用 窗口的makeKeyAndVisible 方法不会使窗口可见 反正马上。 UIKit 等到你的应用程序 application:didFinishLaunchingWithOptions: 方法在之前完成 使窗口在屏幕上可见。

    【讨论】:

    • 我真的对此持怀疑态度,但它的效果给我留下了深刻的印象。非常感谢你!在此之前,我们正在检查以前的视图控制器是否是通过恢复和禁用当前动画来创建的
    • 就我而言,我没有在任何地方调用self.window.makeKeyAndVisible(),而是在application:didFinishLaunchingWithOptions: 方法中设置window.rootController。把它移到application:willFinishLaunchingWithOptions: 就可以了。谢谢!
    • 此解决方案非常适合 iOS 12,但不适用于 iOS 13,因为应用程序委托中未设置窗口。关于如何将此解决方案适用于 iOS 13(使用场景)的任何想法?
    猜你喜欢
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2011-10-06
    • 2015-12-26
    相关资源
    最近更新 更多