Day04 UIKit 03 - SceneDelegate

SceneDelegate

从 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 中使用的方法,以下让我们来个别介绍

  1. scene(_:willConnectTo:options:)

    这是 UISceneSession 生命周期中调用的第一个方法,它将创建一个新的窗口 UIWindow,并设置窗口的 rootViewController,并使该窗口成为将显示的关键窗口,在使用 Storyboard 时,窗口属性将自动初始化并附加到场景中

  2. sceneWillEnterForeground(_:)

    场景连接完成後,当场景即将开始时会调用此方法,例如当应用程序第一次变为活动状态active 或从後台过渡到前台时

  3. sceneDidBecomeActive(_:)

    在场景从非活动状态变为活动状态时调用,此方法在调用 sceneWillEnterForeground方法之後也会立即调用,此时场景已设置完且可见并可供使用

  4. sceneWillResignActive(_:)

    当场景从活动状态移动到非活动状态时调用,这可能是由於临时中断(例如收到来电)而发生

  5. sceneDidEnterBackground(_:)

    当场景从前景过渡到背景时调用,使用此方法保存数据、释放共享资源、存储足够多的场景特定状态资讯以将场景恢复到当前状态

  6. sceneDidDisconnect(_:)

    每当场景被发送到後台时,iOS 可能会决定断开连接并清除您的场景以释放资源。 但这并不意味着应用程序被终止或不再运行,只是场景与 session 断开连接并且不再处於活动状态。 当用户再次将该特定场景置於前台时,iOS 可以决定将该场景重新连接回场景 session

    Session被用於指定场景,可用於还原场景的状态,可以将用户资讯存储到场景 session 中,它是一个可以放入任何内容的dictionary

    此方法要做的最重要的事情是丢弃所有不需要的资源,例如从硬碟或网路加载的数据。以及确保您保留任何重要以及难取得的数据,例如,用户在场景中提供的任何输入,当他们返回场景时,他们希望仍然存在。


<<:  Day 5 TDD 测试驱动开发

>>:  Day19:[排序演算法]Bubble Sort - 气泡排序法

[Day12] 团队系统设计 - 估点系统 (下)

上一篇文章分析了 Scrum 团队在估点活动的遭遇的困难,以及滞碍难行之处。今天来分享我时常采用的变...

Day 05 - 想要够给力的机器-EC2

来到了中秋连假的第一天,买不到云上的月亮,我们就到云上买台机器来玩玩吧 1. 使用EC2好处? EC...

Day-30 不知不觉面试题完赛!感谢大家!

不敢相信今天是第30天了! 我完赛了!好感动啊~ 真的很感谢帮过我的老师/助教/同学/亲友…很多啦...

以Postgresql为主,再聊聊资料库 利用自定义型态 create type 建立 typed table

先来看一张图 简单说明一下里面的指令: 先建立一个 table 名称鲑鱼寿司,里面有两个栏位,苹果跟...

Day 7 - PD架构

身为TIDB的PM,PD主要接收两类讯息,一种是TiKV store回传的心跳信息,store就是T...