【发布时间】:2019-05-24 23:22:45
【问题描述】:
当我终止我的 iOS 应用并重新启动它时,我看到的快速屏幕序列是
- 启动屏幕。
LaunchScreen.storyboard中定义的屏幕。 - 快照。上次将我的应用置于后台时 iPhone 创建的屏幕图像。
- 主屏幕。我在
AppDelegate的application(_:didFinishLaunchingWithOptions:)方法中设置的ViewController。
从我阅读的 Apple 文档看来,在应用程序启动期间,如果存在快照,则 iOS 使用该快照而不是启动屏幕。为什么我同时看到启动屏幕和快照?
此屏幕录像显示了该问题。启动屏幕是红色的。主屏幕为白色。第二个屏幕是绿色的。我导航到绿屏,然后将应用程序置于后台以让 iOS 截取绿色屏幕截图。然后我杀了应用程序。当应用程序重新启动时,顺序是启动/红色,屏幕截图闪烁/绿色,主页/白色。我正在使用 iOS 12.1.1 的 iPhone 6 上进行测试。
作为状态保存过程的一部分,UIKit 会捕获您应用的用户界面并将其存储在图像文件中。当您的应用重新启动时,系统会显示此快照图像来代替您应用的默认启动图像,以保留您的应用仍在运行的概念。
【问题讨论】:
-
您是否使用状态保存并调用
ignoreSnapshotOnNextApplicationLaunch()?如果不是,它与问题有什么关系?即使是这样,如果您人为地杀死您的应用程序,则没有状态保存并且无法调用该方法。 -
我没有打电话给
ignoreSnapshotOnNextApplicationLaunch()。我没有使用状态保存。看起来应用程序/iOS 在创建屏幕截图时正在保存状态。 -
不,状态保存是你做或不做的事情。屏幕截图的创建与此无关。
-
您的故事板是否开启了状态保存功能?
-
我也遇到了同样的问题,这真的让我烦恼了好几天......在我的情况下,它只发生在多窗口打开时。
标签: ios swift appdelegate