自从Xcode11发布以来,当你使用新XCode创建一个新的iOS项目时,SceneDelegate会被默认创建,它到底有什么用呢?
在iOS 13(及以后版本)上,SceneDelegate
将负责AppDelegate
的某些功能。 最重要的是,window(窗口)的概念已被scene(场景)的概念所代替。 一个应用程序可以具有不止一个场景,而一个场景现在可以作为您应用程序的用户界面和内容的载体(背景)。
尤其是一个具有多场景的App的概念很有趣,因为它使您可以在iOS和iPadOS上构建多窗口应用程序。 例如,文档编辑器App中的每个文本文档都可以有自己的场景。 用户还可以创建场景的副本,同时运行一个应用程序的多个实例(类似多开)。
在Xcode 11中有三个地方可以明显地看到SceneDelegate的身影:
1、现在,一个新的iOS项目会自动创建一个SceneDelegate类,其中包括我们熟悉的生命周期事件,例如active,resign和disconnect。
SceneDelegate
还具有下面这些函数:
1)sceneDidDisconnect(_:)
当场景与app断开连接是调用(注意,以后它可能被重新连接)
2)sceneDidBecomeActive(_:)
当用户开始与场景进行交互(例如从应用切换器中选择场景)时,会调用
3)sceneWillResignActive(_:)
当用户停止与场景