为什么选择iOS启动屏幕,然后是快照,然后是主屏幕?

时间:2018-12-26 19:43:20

标签: ios swift appdelegate

当我杀死我的iOS应用并重新启动它时,我看到的快速屏幕显示顺序是

  1. 启动屏幕。在LaunchScreen.storyboard中定义的屏幕。
  2. 快照。 iPhone上次将我的应用程序置于后台时创建的屏幕图像。
  3. 主屏幕。我在ViewController的{​​{1}}方法中设置的AppDelegate

从我阅读的Apple文档中看来,在应用程序启动过程中,如果存在快照,则iOS使用该快照代替启动屏幕。为什么我同时看到启动屏幕快照?

此屏幕录像显示了问题。启动屏幕为红色。主屏幕为白色。第二个屏幕为绿色。我导航到绿色屏幕,然后将应用程序置于后台,以使iOS拍摄绿色屏幕截图。然后我杀死了应用程序。重新启动应用程序时,顺序为启动/红色,屏幕截图/绿色,首页/白色。我正在使用iOS 12.1.1的iPhone 6进行测试。

https://imgur.com/a/EMX4dM1

来自https://developer.apple.com/documentation/uikit/uiapplication/1623097-ignoresnapshotonnextapplicationl

  

在状态保存过程中,UIKit会捕获应用程序的用户界面并将其存储在图像文件中。重新启动您的应用后,系统会显示此快照图像代替您的应用的默认启动图像,以保留您的应用仍在运行的概念。

1 个答案:

答案 0 :(得分:1)

我无法确认您的描述。我的测试表明,如果您过早终止应用程序,则在下次启动时会丢弃前一个背景屏幕截图,而仅使用启动屏幕。

这是我的考试:

  • 启动屏幕为红色

  • 初始视图控制器的视图为白色

  • 辅助视图控制器的视图为绿色

发生了什么事

  1. 您将看到我启动,然后从白色视图移至绿色视图。

  2. 然后我将应用程序设为后台,以确保拍摄了快照。

  3. 然后我将应用程序带回前台,然后进入应用程序启动器,以便可以看到快照,该快照的确是绿色的。

  4. 然后我杀死该应用程序并重新启动。我在电影的这一部分中使用了慢动作,您可以清楚地看到我们使用红色的启动屏幕,并淡化为初始视图控制器的白色。绿色永远不会消失。

enter image description here

也许您的测试过程有误(仅在设备上进行测试)。也许进入错误的屏幕,然后跳回打开屏幕(这似乎是最有可能的解释)。