Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么iOS启动屏幕然后快照然后主屏幕?_Ios_Swift_Appdelegate - Fatal编程技术网

为什么iOS启动屏幕然后快照然后主屏幕?

为什么iOS启动屏幕然后快照然后主屏幕?,ios,swift,appdelegate,Ios,Swift,Appdelegate,当我关闭iOS应用程序并重新启动它时,我看到的屏幕的快速顺序是 启动屏幕。在LaunchScreen.storyboard中定义的屏幕 快照。上次将我的应用程序放在后台时iPhone创建的屏幕图像 主屏幕。我在AppDelegate的应用程序中设置的ViewController(\uUdidFinishLaunchingWithOptions:)方法 从我阅读的苹果文档来看,在应用程序启动期间,如果存在快照,iOS将使用该快照而不是启动屏幕。为什么我同时看到启动屏幕和快照 此屏幕记录显示问题。启

当我关闭iOS应用程序并重新启动它时,我看到的屏幕的快速顺序是

  • 启动屏幕。在
    LaunchScreen.storyboard
    中定义的屏幕
  • 快照。上次将我的应用程序放在后台时iPhone创建的屏幕图像
  • 主屏幕。我在
    AppDelegate
    应用程序中设置的
    ViewController
    (\uUdidFinishLaunchingWithOptions:)
    方法
  • 从我阅读的苹果文档来看,在应用程序启动期间,如果存在快照,iOS将使用该快照而不是启动屏幕。为什么我同时看到启动屏幕和快照

    此屏幕记录显示问题。启动屏幕是红色的。主屏幕是白色的。第二个屏幕是绿色的。我导航到绿色屏幕,然后将应用程序放在后台,让iOS拍摄绿色屏幕截图。然后我杀死了这个应用程序。重新启动应用程序时,顺序为启动/红色,屏幕截图闪烁/绿色,主屏幕/白色。我正在用iOS 12.1.1测试iPhone6

    作为状态保存过程的一部分,UIKit捕获应用程序的用户界面并将其存储在图像文件中。重新启动应用程序时,系统将显示此快照图像,以取代应用程序的默认启动图像,从而保留应用程序仍在运行的概念


    我无法证实你的描述。我的测试表明,如果你过早地终止了你的应用程序,那么在下一次发布时,上一次的背景屏幕截图将被丢弃,只使用启动屏幕

    这是我的测试:

    • 发射屏幕是红色的

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

    • 次视图控制器的视图为绿色

    发生的情况如下:

  • 您将看到我启动,然后从白色视图移动到绿色视图

  • 然后我将应用程序设置为后台,以确保快照已拍摄

  • 然后我将应用程序带回到前台,然后进入应用程序启动程序,这样您就可以看到快照,它确实是绿色的

  • 然后我关闭应用程序并重新启动它。我在电影的这一部分使用了慢镜头,你可以清楚地看到,我们使用了红色的启动屏幕,并将初始视图控制器淡入白色;绿色不再出现


  • 可能您的测试程序有问题(仅在设备上测试)。可能您启动到错误的屏幕,然后跳回打开的屏幕(这似乎是最可能的解释)。

    您是否使用状态保留并调用
    忽略SnapshotOnnextApplicationLaunch()
    ?如果不是,这与问题有什么关系?即使是这样,如果你人为地杀死你的应用程序,也不会有状态保留,也无法调用该方法。我不是在调用
    ignoresnapshottonnextapplicationlaunch()
    。我没有使用国家保护。在创建屏幕截图的过程中,应用程序/iOS似乎正在进行状态保存。不,状态保存是指您是否进行了操作。截图的制作与此无关。你的故事板是否开启了国家保护?我也有同样的问题,这真的困扰了我好几天。。。在我的例子中,它只在打开“多窗口”时发生。我重新创建了您的测试,但仍然有相同的意外结果。屏幕截图/绿色在启动/白色和主/红色之间闪烁。请查看我添加到原始帖子的屏幕录制链接。酷!现在我们需要弄清楚区别是什么。:)这一次,我完全用故事板创建了这个应用程序。更改启动屏幕的颜色。将主屏幕包装在导航控制器中。在主屏幕上添加一个按钮以显示第二个/绿色屏幕。就这样。我对一个应用程序做了同样的操作,它有
    LaunchScreen.storyboard
    和所有其他以编程方式创建和显示的视图。iPhone 6上的结果相同。是的,我的应用程序和你的一样。-为什么你有一个红色的状态栏?这是什么iOS版本?红色状态栏表示我正在进行屏幕录制。我在iPhone 6上使用iOS 12.1.1。我用Xcode 10.1创建了这个应用程序。