[WWDC20] What's New in SwiftUI

引言

不出所料,Apple在过去一年间给予了SwiftUI极高的重视,本次WWDC也公布了非常多的新内容。

本文主要基于WWDC20 Day2 中对SwiftUI的概览性介绍视频 - 《What‘s new in SwiftUI》,同时结合本人过去一年间对SwiftUI粗浅的探索,对SwiftUI框架第二次main release 进行内容的梳理,主要做后续深入研究的目录使用。

具体内容介绍还请移步[AppleDeveloper官网]

【前排多图预警⚠️】


1. 新的结构性Protocol:App SwiftUI是声明式的,由状态驱动的框架,App组件的增入继续对这一理念进行了强化和扩展。区别于之前只能View 套View 的模式,App表征整个应用,相当于Main()函数,目测将对应用生命周期的全局控制做出巨大影响。

2. 新的项目选项

在Xcode创建Project下新增跨平台项目类型,支持iOS,MacOS 等系统直接适配。具体通过WindowGroup等组件实现适配,可以理解为组件底层自带适配各种系统界面大小的AutoLayout,同代码无缝跨平台。

3. 新的加载界面创建方式

过去一年间,SwiftUI在各种方面都对传统Swift具有较强的依赖。不得不持续使用StoryBoard的LaunchScreen的就是其中之一。但今年显然支持通过SwiftUI独立创建了,而且是通过.plist 的形式。


4. Widgets

关注了第一天KeyNotes的人一定知道,Widgets作为本次系统更新的一大亮点,自然也会在SwiftUI中得以体现。置入的方式同1.所述的 【App】,均为protocol的格式。

5. Complications

理解为系统自发整合的数据集,通过ClockKit等组件,一步完成数据整合到可视化组件创建。


6. 列表类组件的扩展

递归式目录 - Recursive outlines

可滑动表格 - Scrolling Grid

堆叠式视图 - Stack View

What's new for SwiftUI 在容器型组件中主要介绍了以上三类,形式上其实都是对原本就已经存在的视图类型进行实现,但在数据层上实现了延迟加载 - (Lazy Loading)

在之前的SwiftUI版本中,只有List组件能够是自发适配延迟加载、循环利用的,其他的ScrollView统统需要手动进行加载缓冲。这一更新极大程度地完善了SwiftUI体系中的数据加载框架。 

7. Toolbar

Toolbar在视图中划分出单独的一块,完善前版本中的组件堆放问题。(试过的都知道之前版本有多反人类 = = ,尤其是NavigationView)

8. SF Symbols 2.0

用过的都说好,不过缺点就是太少了。新版本大幅扩充了icon库,值得期待。截图是1.0版本

9. Label

扩充功能的组件之一,但凡做过前端开发的应该都不陌生。新版本支持直接填充文本和图片。

10. Command

通过.keyboardShortcut: modifier 实现,在iPadOS 和MacOS 中创建应用快捷键。

11. Focus

当前聚焦组件的检测,主要用在macOS 和tvOS上。

12. ProgressView

同样是传统Swift组件之一,之后再也不需要通过Representable 适配了

13. Gauge

范围型标识组件,图中表示为PH值测试(圆圈)


14. Namespace

同一组数据集可以通过.matchGeometryEffect 修饰被划分到不同的View组件中。如图中商量两组图片,支持通过拖动实现的组转移。


 15. Text

仍将是主要的文本展示组件,新版本扩展后支持直接在Text中插入Image   

16. System Accent Color

应用能够默认应用系统主题色

17.  Link - LPLinkView 的SwiftUI化

在原有功能的基础上新增如下功能:

直接跳转至另一App

以Widget的形式贴至桌面


18.  SignInWithAppleButton

新版本系统将大范围推广通过苹果账号登陆功能,在SwiftUI中甚至直接将这一行为封装为一个完整的Button


- 总结

说点废话:本次WWDC公布的对SwiftUI的内容上的更新主要能概括为一下两个方面:

对功能进行补足,保证SwiftUI能够尽快在功能实现的范畴上向传统Swift看齐,摆脱臃肿的Representable接合模式,脱离原生Swift独立进行开发。

另一方面,SwiftUI也紧跟Apple各个系统的脚步,完全适配了新系统Widget 等组件。

不必多言,SwiftUI未来必然是iOS开发的主流框架。不光是因为支持实时预览的preview模式将大幅改变移动应用开发中视图层和逻辑层的开发格局。更因为优雅的声明式和状态驱动型框架更加贴合Apple一直以来的理念。

你可能感兴趣的:([WWDC20] What's New in SwiftUI)