从 iOS 13 开始,SceneDelegate 承担了 AppDelegate 的一些职责,特别是 AppDelegate 中的 UIWindow 现在是 SceneDelegate 中的 UIScene,SceneDelegate 负责将数据和 UI 显示在屏幕上。
当你处理场景时,对用户来说看起来像一个窗口的东西实际上被称为 UIScene,它由 UISceneSession 管理。 所以当我们提到 windows 时,实际上指的是 UISceneSession 物件
其中 SceneDelegate 有以下六种主要的方法:
scene(_:willConnectTo:options:)
sceneWillEnterForeground(_:)
sceneDidBecomeActive(_:)
sceneDidDisconnect(_:)
sceneWillResignActive(_:)
sceneDidEnterBackground(_:)
这些方法类似於在 iOS 13 以前的 AppDelegate 中使用的方法,以下让我们来个别介绍
scene(_:willConnectTo:options:)
这是 UISceneSession 生命周期中调用的第一个方法,它将创建一个新的窗口 UIWindow,并设置窗口的 rootViewController,并使该窗口成为将显示的关键窗口,在使用 Storyboard 时,窗口属性将自动初始化并附加到场景中
sceneWillEnterForeground(_:)
场景连接完成後,当场景即将开始时会调用此方法,例如当应用程序第一次变为活动状态active 或从後台过渡到前台时
sceneDidBecomeActive(_:)
在场景从非活动状态变为活动状态时调用,此方法在调用 sceneWillEnterForeground
方法之後也会立即调用,此时场景已设置完且可见并可供使用
sceneWillResignActive(_:)
当场景从活动状态移动到非活动状态时调用,这可能是由於临时中断(例如收到来电)而发生
sceneDidEnterBackground(_:)
当场景从前景过渡到背景时调用,使用此方法保存数据、释放共享资源、存储足够多的场景特定状态资讯以将场景恢复到当前状态
sceneDidDisconnect(_:)
每当场景被发送到後台时,iOS 可能会决定断开连接并清除您的场景以释放资源。 但这并不意味着应用程序被终止或不再运行,只是场景与 session 断开连接并且不再处於活动状态。 当用户再次将该特定场景置於前台时,iOS 可以决定将该场景重新连接回场景 session。
Session被用於指定场景,可用於还原场景的状态,可以将用户资讯存储到场景 session 中,它是一个可以放入任何内容的dictionary
此方法要做的最重要的事情是丢弃所有不需要的资源,例如从硬碟或网路加载的数据。以及确保您保留任何重要以及难取得的数据,例如,用户在场景中提供的任何输入,当他们返回场景时,他们希望仍然存在。
>>: Day19:[排序演算法]Bubble Sort - 气泡排序法
上一篇文章分析了 Scrum 团队在估点活动的遭遇的困难,以及滞碍难行之处。今天来分享我时常采用的变...
来到了中秋连假的第一天,买不到云上的月亮,我们就到云上买台机器来玩玩吧 1. 使用EC2好处? EC...
不敢相信今天是第30天了! 我完赛了!好感动啊~ 真的很感谢帮过我的老师/助教/同学/亲友…很多啦...
先来看一张图 简单说明一下里面的指令: 先建立一个 table 名称鲑鱼寿司,里面有两个栏位,苹果跟...
身为TIDB的PM,PD主要接收两类讯息,一种是TiKV store回传的心跳信息,store就是T...