WWDC2022-iOS 篇完全解析

2022-11-03 09:05:48 浏览数 (2)

# 背景

Apple 于北京时间 2022 年 6 月 7 日举办了 WWDC2022,作为一名 Apple 开发者,不仅仅是为了保持技术敏感度,同时也希望在第一时间将新的内容呈现在大家眼前。本文对发布会内容做了整理归纳,并着重对 iOS 的新内容进行分析。希望这篇文章对大家有所帮助的同时也给我们的产品带来更多的可能性。

相对于 iOS15 来说,iOS16 的整体变化比较大,尤其是在我们看得见的地方,比如一些 UI 样式,交互行为和一些新增的功能。下面会按照 WWDC 的出厂顺序来介绍,其中包含了每个改动点的细节以及个人的理解和后面的展望。

# Developer

# Xcode 相关

新版的 Xcode 同样也跟新了相关的内容,帮助开发者提高开发效率。

# 方法吸顶以及代码提示

在之前的版本中,如果方法函数过多超了一屏展示,随着滚动函数名不可见,而新版的 Xcode 提供了类似 TableViewHeader 的效果,让方法名和实现名字固定在顶部,方便随时查看和复制。对小屏还是比较友好的。

同样在使用初始化方法的时候如果是支持传入参数的初始化方法也会通过斜体来进行参数提示 (Swift 专属)

# Xcode 安装体积

新版的 Xcode 优化了包体积,同时在进行安装的时候可以自定义需要哪些平台,需要哪些模拟器,笔者亲测相比之前的无脑把 AppleTV、Apple Watch、ipad 等都安装下来的情况来看,整个包体积减少了十几个 G 左右。对于小存储的 MacBook 是一个福音。

# Xcode 编译与调试

根据苹果的描述新版 Xcode 优化项目的编译速度, 得益于更强大的并行编译能力,项目构建速度提升至高可达 25%

  • 改善前:先编译 framework 里的代码,然后生成 module,然后编译 app 里的代码,最终经过链接完成了构建。
  • 改善后:通过提高并发,缩短了构建的关键的路径

同时单元测试的效率也提高了 30%

Xcode14 还支持输出编译期间每个阶段的耗时和详细信息,相比之前的只能通过控制台的名字描述要直观不少。

对于 LLDB,现在还可以看到执行的过程和信息,对于一些需要长时间跑的命令较为友好,类似于 --verbose 参数的含义

在新版的 Xcode 中除了 App 和系统的日志,同样支持 LLDB 的日志输出,当时在用 LLDB 调试的时候发生 Crash,便可以到相关路径中找到对应日志。

# 开发者模式

新版的 iOS 和 Watch OS 引入了新的开发者模式,原理和安卓的开发者模式类似,用苹果的话说是为了 开发者模式可防止人们无意中在其设备上安装可能有害的软件,并减少开发者专用功能所暴露的攻击媒介。 ,对于普通人来说确实可以提高安全性,之前只要是加入了开发者账号的手机都可以从 Xcode 编译运行第三方的 App,或者按照企业证书的签名包,而不这些手机主人都是无感的,现在需要手机主人通过多重确认来打开此功能后才可以进行安装非 App StoreTestfilght 渠道的包。

但是这个对于开发者来说并不友好,首先是调试过程有会多增加一些步骤,而且在自动化测试方面,所有的手机都要先通过命令来打开开发者模式,并且根据苹果的说法,使用命令行进行开关要确保手机没有密码,否则会被拒绝运行。这里笔者也尝试在未打开 开发者模式 的情况下进行 Xcode 编译,确实会失败。

笔者预测该功能可能是为后续的第三方 App 市场做准备,因为现在虽然苹果不支持三方市场,但是普通用户还是可以通过一些三方网站安装重签包,同时他们并不知道这些包会带来潜在的危险,再加上欧盟一些反垄断政策的施压,所以苹果决定逐步开放三方应用市场,这应该就是第一步吧,先让用户意识到这样做可能会有一些危害。

无论是美国的《美国选择与创新法案》、还是欧盟的《数字市场法案》,都要求苹果在App Store之外为用户提供额外的应用下载渠道。现在看来,苹果方面可能已经认为改变欧盟与美国的态度已经不太可能了,那么既然支持侧载或许无法避免,那么让用户更难发现侧载功能的入口就成为了备选项。

# LockScreen

# 锁屏样式

重新修改了锁屏的样式,在优化了时间显示的字体的同时也在锁屏上提供了更多能力,展示更多的信息,并加入了一些新的交互样式,通过在锁屏界面长按来进入锁屏界面的编辑状态,这个动画效果有点类似安卓的编辑桌面的效果。

iOS16 的锁屏样式可以大致分为两类

  • 动态锁屏 比如在 Beta1 中可以看到的天气锁屏,依赖于天气 App 的信息,在点亮屏幕的一瞬间可以在锁定屏幕上动态显示天气的效果,比如雨雪风晴等,持续几秒钟后停止。笔者预测该能力后续会和 Livephoto 关联起来,实现用户自定义动态照片,毕竟现在的 livephoto 设置锁屏之后只有在长按才会触发播放,到时候长按的手势会和设置锁屏的手势冲突,所以 livephoto 必然会变成自动播放,

再长远预测的话也可能后续会把该能力开放给第三方 App 来定制动态锁屏的图片,类型于现在的天气 App。比如 QQ 音乐的专辑封面,歌手的演唱动图等。目前动态背景只支持锁屏界面,解锁后进入桌面便会停止,估计是处于性能考虑,动态桌面的可能性不大,应该仅限于锁屏。

  • 静态照片 iPhone 一直可以支持设置静态照片为锁屏壁纸,但是 iOS16 给静态照片锁屏提供了更多的玩法。
  • 照片随机切换:用户可以选定一组照片来作为锁屏壁纸,类似于幻灯片放映的样式,切换的频率可以设置为 每次点亮每次点击每小时每天
  • 照片景深:这个能力算是 iOS16 更新比较大的,通过机器学习模型将照片中的主体突出,可以遮挡在时间上,这里的主体可以是图片中任何可区分的物体,不仅仅是人像模式的照片。(在实际使用中,经常会失败,beta1 还是不够稳定)

<img src="https://tva1.sinaimg.cn/large/e6c9d24egy1h34311bz9nj20i212yaci.jpg" alt="image#268px #578px" style="zoom:50%;" /> <img src="https://tva1.sinaimg.cn/large/e6c9d24egy1h343248pg9j20mu18udmh.jpg" alt="image#292px #574px" style="zoom:43%;" />

  • 表情壁纸:将 IPhone 输入法中自带的表情进行一定规律的排列组合形成一张壁纸,最多支持输入六个表情。
  • 颜色壁纸:可以定义一些渐变颜色
  • 官方背景图壁纸。一些官方图片,支持景深效果

<img src="https://tva1.sinaimg.cn/large/e6c9d24egy1h342tqqveuj20hw10wq5b.jpg" alt="image#189px #390px" style="zoom:50%;" />

# 锁屏组件

iOS16 在锁屏界面可以展示更多的信息,其中就包括了锁屏小组件的加入。可以看到锁屏顶部分三个区域。

<img src="https://tva1.sinaimg.cn/large/e6c9d24egy1h3432d16hsj20ie13adie.jpg" alt="image#270px #577px" style="zoom:50%;" />