本文涉及的内容:

  1. iOS13中UISceneDelegate所带来的的变化;
  2. 如何配置使得在iOS13中不使用默认的UISceneDelegate

概述

iOS13上,仍然不支持 iPhone 分屏功能,其带来的是 iOS开发中 App 生命中期代理者的改变,原先生命周期函数由 AppDelegate 进行管理,现在不仅 AppDelegate 可以管理,SceneDelegate 也可以对 App 的声明周期函数进行代理,且在 Xcode10 中默认为SceneDelegate 。若两者同时存在,SceneDelegate 优先级更高。

变化

此次改变只涉及到app状态的变化,也就是app的声明周期函数,比如WillEnterForegroundWillResignActiveDidEnterBackground等。didFinishLaunchingWithOptions不属于 App 状态的变化,准确来讲,官网用的词语为transition。其变化内容为:

  • iOS13之前:在app状态发生改变时,UIKit 框架会发送通知到UIApplicationDelegate 对象上;
  • iOS13及其以后,在app状态发生改变时,UIKit 会优先发送通知到 SceneDelegate对象上;

结果就是:

  • UIApplicationDelegate对象上只剩下三个函数:
  1. 加载完成:didFinishLaunchingWithOptions
  2. 配置将要连接的场景:configurationForConnectingSceneSession
  3. 丢弃场景对象之后:didDiscardSceneSessions
  • SceneDelegate接管了所有的 app 过渡函数和场景的连接:
  1. 将要连接场景:willConnectToSession
  2. 已连接场景:sceneDidDisconnect
  3. sceneDidBecomeActive
  4. sceneWillResignActive
  5. sceneWillEnterForeground
  6. sceneDidEnterBackground

注意

  1. iOS13 之后不代表一定有分屏,也不代表 iPhone 可以使用分屏功能,当前仍然只有 iPad 可以使用分屏功能;
  2. 开启分屏需要勾选Supports multiple windows并进行配置和支持,iPad 开发在此不讨论,所以不会展开分屏功能的开发细节;

新工程的配置

Xcode10 中,默认会创建SceneDelegate并且在 info.plist 中生成对应的配置,如下:

SceneDelegate

info.plist 如下

info.plist

如果不想使用SceneDelegate也是可以的,需要:

  1. 删除 info.plist 中的Scene Configuration配置;

    info.plist

  2. AppDelegate中添加applicationWillEnterForeground等函数;

- (void)applicationWillEnterForeground:(UIApplication *)application {NSLog(@"applicationWillEnterForeground");}- (void)applicationDidEnterBackground:(UIApplication *)application {NSLog(@"applicationDidEnterBackground");}- (void)applicationDidBecomeActive:(UIApplication *)application {NSLog(@"applicationDidBecomeActive");}- (void)applicationWillResignActive:(UIApplication *)application {NSLog(@"applicationWillResignActive");}
  1. AppDelegate中添加UIWindow属性;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end

其他

其实,UISceneDelegate使得原先的AppDelegate中的代码更加简洁,是推荐使用的。如果原本项目中已经采用自定义的AppDelegate来对业务和transition函数进行了分离,可以忽略。

iOS13:UISceneDelegate相关推荐

  1. 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例

    大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...

  2. golang大厂面试2

    golang大厂面试 滴滴 写个二分查找 以下是一个简单的二分查找算法的 Go 语言实现: package mainimport "fmt"// 二分查找函数 func binar ...

  3. InstallShield内部库函数

    InstallShield内部库函数 下载资源:点击 1  库函数综述 InstallShield包含300多个内部库函数,用户可在安装脚本中调用它们来创建程序组,操作文件夹,处理目录,监督安装状态, ...

  4. ios3怎么取消长按弹出菜单_苹果:iOS13取消3D-Touch重压改为长按只是个BUG~

    原标题:苹果:iOS13取消3D-Touch重压改为长按只是个BUG~ 目前iOS 13中3D-Touch功能在桌面级菜单采用的是类似iPhone XR的触觉感应(Haptic touch),用户只需 ...

  5. 苹果推送watchOS 5.3.2更新:用户无需升级至iOS13也可使用

    苹果现已向Apple Watch Series 4的用户推送了watchOS 5.3.2 的第二个版本的更新,此次更新主要针对无法升级到iOS13或更高版本的iPhone老机型机主配套使用智能手表. ...

  6. mysqlserver输入密码后闪退_iOS降级教程:iOS 14 后如何降级到ios13?

    今年的 WWDC20 全球开发者大会上,苹果如期推出了 iOS 14,并在当天放出了第一个开发者测试版本. iOS 14新系统的各种新功能让人眼前一亮,冲着 iOS 14的新功能,一波又一波的用户已经 ...

  7. ios 系统提示框_二个消息:关于iOS12.2和iOS13 beta 1系统功能

    今天分享最新三条消息: 1.iOS12.2 取消低电量提示声 2.iOS13 beta 1 曝光新功能 一.iOS12.2 取消低电量提示声 国行版设备 iOS12.2 取消低电量提示声,在此之前旧版 ...

  8. 苹果6性能测试软件,5款iPhone升级iOS13.6性能测试:运行速度有所提升?

    iOS13.6正式版已经推送发布了,这或许是iOS14正式版发布前最后一次重大更新.新增了许多特色功能同时,在运行速度方面是否有所提升呢?如今这里有5款旧iPhone,分别是iPhoneSE.iPho ...

  9. 苹果工具条_苹果承认错误:个人热点“断连” !iOS13.4或成救命稻草!

    果师兄科技资讯:iOS13系统相比iOS12做了很大的改动,更新后因为存在系统不稳定.APP闪退等问题,让不少果粉大呼:翻车.从iOS13.2开始就有网友反馈出现了个人热点问题,开启热点后无法连接或连 ...

  10. ios13全选手势_iOS13操作新手势:使用iPhone编辑文本更方便

    iOS13为iPhone加入全新的编辑编辑功能,当中包括了使用3只手指的全新手势操作,另外因应iPhone11不支持3D Touch,操作方式亦因应HapticT ouch作出改变.以下就为大家介绍i ...

最新文章

  1. 深入RESTful无状态原则
  2. itchat 动态注册
  3. 永洪科技携手华为构建金融智慧运营与商业智能方案,解决金融敏捷分析难题
  4. 大剑无锋之数据库的范式【面试推荐】
  5. Docker入门总结
  6. 女孩子狠起来可以多可怕?
  7. Moving On Gym - 102222F
  8. WIN7 X64 下 VS2008升级补丁 (显示隐藏按钮)
  9. Chrome浏览器的自动保存密码提示功能禁用方法
  10. 为什么阿里规定需要在事务注解@Transactional中指定rollbackFor
  11. 解决LaTeX中文表格单行文本太长导致水平溢出,表格内长文本换行
  12. excel如何制作图表
  13. 广告行业常用英文词汇
  14. Evaluate the standards between the Top Five through ratings of transferred players on whoscored.com
  15. c语言课程设计 雪花飘落,c雪花飘落课程设计.doc
  16. mac下关闭Chrome的自动更新
  17. 参数validator/valid校验用法(通俗)
  18. 微信小程序 getPhoneNumber获取用户手机号
  19. RDMA技术--华为精华
  20. unity2019安装完后打不开直接闪退_VS2019打不开或没反应该怎么解决?

热门文章

  1. 分布式文件存储FastDFS之环境搭建篇
  2. Spring Cloud Eureka详解
  3. dubbo超时机制原理
  4. ScheduledThreadPoolExecutor之scheduleWithFixedDelay和scheduleAtFixedRate的区别
  5. springboot系列十二 Spring-Data-ElasticSearch Jpa、QueryBuilder、MatchQuery、位置搜索、GeoPoint...
  6. ceph mds的客户端告警记录
  7. VS2012+SQLServer2008 R2 开发工具
  8. Swift3.0P1 语法指南——控制流
  9. HDU2093--考试排名
  10. 正则表达式判断是否为数字