iOS13:UISceneDelegate
本文涉及的内容:
- iOS13中
UISceneDelegate
所带来的的变化; - 如何配置使得在iOS13中不使用默认的
UISceneDelegate
;
概述
iOS13上,仍然不支持 iPhone 分屏功能,其带来的是 iOS开发中 App 生命中期代理者的改变,原先生命周期函数由 AppDelegate
进行管理,现在不仅 AppDelegate 可以管理,SceneDelegate
也可以对 App 的声明周期函数进行代理,且在 Xcode10 中默认为SceneDelegate
。若两者同时存在,SceneDelegate
优先级更高。
变化
此次改变只涉及到app状态的变化,也就是app的声明周期函数,比如WillEnterForeground
、WillResignActive
、DidEnterBackground
等。didFinishLaunchingWithOptions
不属于 App 状态的变化,准确来讲,官网用的词语为transition
。其变化内容为:
- iOS13之前:在app状态发生改变时,UIKit 框架会发送通知到
UIApplicationDelegate
对象上; - iOS13及其以后,在app状态发生改变时,UIKit 会优先发送通知到
SceneDelegate
对象上;
结果就是:
UIApplicationDelegate
对象上只剩下三个函数:
- 加载完成:didFinishLaunchingWithOptions
- 配置将要连接的场景:configurationForConnectingSceneSession
- 丢弃场景对象之后:didDiscardSceneSessions
SceneDelegate
接管了所有的 app 过渡函数和场景的连接:
- 将要连接场景:willConnectToSession
- 已连接场景:sceneDidDisconnect
- sceneDidBecomeActive
- sceneWillResignActive
- sceneWillEnterForeground
- sceneDidEnterBackground
注意
- iOS13 之后不代表一定有分屏,也不代表 iPhone 可以使用分屏功能,当前仍然只有 iPad 可以使用分屏功能;
- 开启分屏需要勾选
Supports multiple windows
并进行配置和支持,iPad 开发在此不讨论,所以不会展开分屏功能的开发细节;
新工程的配置
Xcode10 中,默认会创建SceneDelegate
并且在 info.plist 中生成对应的配置,如下:
info.plist 如下
如果不想使用SceneDelegate
也是可以的,需要:
删除 info.plist 中的
Scene Configuration
配置;info.plistAppDelegate
中添加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");}
AppDelegate
中添加UIWindow
属性;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
其他
其实,UISceneDelegate
使得原先的AppDelegate
中的代码更加简洁,是推荐使用的。如果原本项目中已经采用自定义的AppDelegate
来对业务和transition
函数进行了分离,可以忽略。
iOS13:UISceneDelegate相关推荐
- 大数据技术之_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. ...
- golang大厂面试2
golang大厂面试 滴滴 写个二分查找 以下是一个简单的二分查找算法的 Go 语言实现: package mainimport "fmt"// 二分查找函数 func binar ...
- InstallShield内部库函数
InstallShield内部库函数 下载资源:点击 1 库函数综述 InstallShield包含300多个内部库函数,用户可在安装脚本中调用它们来创建程序组,操作文件夹,处理目录,监督安装状态, ...
- ios3怎么取消长按弹出菜单_苹果:iOS13取消3D-Touch重压改为长按只是个BUG~
原标题:苹果:iOS13取消3D-Touch重压改为长按只是个BUG~ 目前iOS 13中3D-Touch功能在桌面级菜单采用的是类似iPhone XR的触觉感应(Haptic touch),用户只需 ...
- 苹果推送watchOS 5.3.2更新:用户无需升级至iOS13也可使用
苹果现已向Apple Watch Series 4的用户推送了watchOS 5.3.2 的第二个版本的更新,此次更新主要针对无法升级到iOS13或更高版本的iPhone老机型机主配套使用智能手表. ...
- mysqlserver输入密码后闪退_iOS降级教程:iOS 14 后如何降级到ios13?
今年的 WWDC20 全球开发者大会上,苹果如期推出了 iOS 14,并在当天放出了第一个开发者测试版本. iOS 14新系统的各种新功能让人眼前一亮,冲着 iOS 14的新功能,一波又一波的用户已经 ...
- ios 系统提示框_二个消息:关于iOS12.2和iOS13 beta 1系统功能
今天分享最新三条消息: 1.iOS12.2 取消低电量提示声 2.iOS13 beta 1 曝光新功能 一.iOS12.2 取消低电量提示声 国行版设备 iOS12.2 取消低电量提示声,在此之前旧版 ...
- 苹果6性能测试软件,5款iPhone升级iOS13.6性能测试:运行速度有所提升?
iOS13.6正式版已经推送发布了,这或许是iOS14正式版发布前最后一次重大更新.新增了许多特色功能同时,在运行速度方面是否有所提升呢?如今这里有5款旧iPhone,分别是iPhoneSE.iPho ...
- 苹果工具条_苹果承认错误:个人热点“断连” !iOS13.4或成救命稻草!
果师兄科技资讯:iOS13系统相比iOS12做了很大的改动,更新后因为存在系统不稳定.APP闪退等问题,让不少果粉大呼:翻车.从iOS13.2开始就有网友反馈出现了个人热点问题,开启热点后无法连接或连 ...
- ios13全选手势_iOS13操作新手势:使用iPhone编辑文本更方便
iOS13为iPhone加入全新的编辑编辑功能,当中包括了使用3只手指的全新手势操作,另外因应iPhone11不支持3D Touch,操作方式亦因应HapticT ouch作出改变.以下就为大家介绍i ...
最新文章
- 深入RESTful无状态原则
- itchat 动态注册
- 永洪科技携手华为构建金融智慧运营与商业智能方案,解决金融敏捷分析难题
- 大剑无锋之数据库的范式【面试推荐】
- Docker入门总结
- 女孩子狠起来可以多可怕?
- Moving On Gym - 102222F
- WIN7 X64 下 VS2008升级补丁 (显示隐藏按钮)
- Chrome浏览器的自动保存密码提示功能禁用方法
- 为什么阿里规定需要在事务注解@Transactional中指定rollbackFor
- 解决LaTeX中文表格单行文本太长导致水平溢出,表格内长文本换行
- excel如何制作图表
- 广告行业常用英文词汇
- Evaluate the standards between the Top Five through ratings of transferred players on whoscored.com
- c语言课程设计 雪花飘落,c雪花飘落课程设计.doc
- mac下关闭Chrome的自动更新
- 参数validator/valid校验用法(通俗)
- 微信小程序 getPhoneNumber获取用户手机号
- RDMA技术--华为精华
- unity2019安装完后打不开直接闪退_VS2019打不开或没反应该怎么解决?
热门文章
- 分布式文件存储FastDFS之环境搭建篇
- Spring Cloud Eureka详解
- dubbo超时机制原理
- ScheduledThreadPoolExecutor之scheduleWithFixedDelay和scheduleAtFixedRate的区别
- springboot系列十二 Spring-Data-ElasticSearch Jpa、QueryBuilder、MatchQuery、位置搜索、GeoPoint...
- ceph mds的客户端告警记录
- VS2012+SQLServer2008 R2 开发工具
- Swift3.0P1 语法指南——控制流
- HDU2093--考试排名
- 正则表达式判断是否为数字