[WWDC20] What's New in SwiftUI

引言

不出所料,Apple在過去一年間給予了SwiftUI極高的重視,本次WWDC也公布了非常多的新內(nèi)容。

本文主要基于WWDC20 Day2 中對SwiftUI的概覽性介紹視頻 - 《What‘s new in SwiftUI》,同時結(jié)合本人過去一年間對SwiftUI粗淺的探索,對SwiftUI框架第二次main release 進行內(nèi)容的梳理,主要做后續(xù)深入研究的目錄使用。

具體內(nèi)容介紹還請移步[AppleDeveloper官網(wǎng)]

【前排多圖預(yù)警??】


1. 新的結(jié)構(gòu)性Protocol:App SwiftUI是聲明式的,由狀態(tài)驅(qū)動的框架,App組件的增入繼續(xù)對這一理念進行了強化和擴展。區(qū)別于之前只能View 套View 的模式,App表征整個應(yīng)用,相當(dāng)于Main()函數(shù),目測將對應(yīng)用生命周期的全局控制做出巨大影響。

2. 新的項目選項

在Xcode創(chuàng)建Project下新增跨平臺項目類型,支持iOS,MacOS 等系統(tǒng)直接適配。具體通過WindowGroup等組件實現(xiàn)適配,可以理解為組件底層自帶適配各種系統(tǒng)界面大小的AutoLayout,同代碼無縫跨平臺。

3. 新的加載界面創(chuàng)建方式

過去一年間,SwiftUI在各種方面都對傳統(tǒng)Swift具有較強的依賴。不得不持續(xù)使用StoryBoard的LaunchScreen的就是其中之一。但今年顯然支持通過SwiftUI獨立創(chuàng)建了,而且是通過.plist 的形式。


4. Widgets

關(guān)注了第一天KeyNotes的人一定知道,Widgets作為本次系統(tǒng)更新的一大亮點,自然也會在SwiftUI中得以體現(xiàn)。置入的方式同1.所述的 【App】,均為protocol的格式。

5. Complications

理解為系統(tǒng)自發(fā)整合的數(shù)據(jù)集,通過ClockKit等組件,一步完成數(shù)據(jù)整合到可視化組件創(chuàng)建。


6. 列表類組件的擴展

遞歸式目錄 - Recursive outlines

可滑動表格 - Scrolling Grid

堆疊式視圖 - Stack View

What's new for SwiftUI 在容器型組件中主要介紹了以上三類,形式上其實都是對原本就已經(jīng)存在的視圖類型進行實現(xiàn),但在數(shù)據(jù)層上實現(xiàn)了延遲加載 - (Lazy Loading)

在之前的SwiftUI版本中,只有List組件能夠是自發(fā)適配延遲加載、循環(huán)利用的,其他的ScrollView統(tǒng)統(tǒng)需要手動進行加載緩沖。這一更新極大程度地完善了SwiftUI體系中的數(shù)據(jù)加載框架。 

7. Toolbar

Toolbar在視圖中劃分出單獨的一塊,完善前版本中的組件堆放問題。(試過的都知道之前版本有多反人類 = = ,尤其是NavigationView)

8. SF Symbols 2.0

用過的都說好,不過缺點就是太少了。新版本大幅擴充了icon庫,值得期待。截圖是1.0版本

9. Label

擴充功能的組件之一,但凡做過前端開發(fā)的應(yīng)該都不陌生。新版本支持直接填充文本和圖片。

10. Command

通過.keyboardShortcut: modifier 實現(xiàn),在iPadOS 和MacOS 中創(chuàng)建應(yīng)用快捷鍵。

11. Focus

當(dāng)前聚焦組件的檢測,主要用在macOS 和tvOS上。

12. ProgressView

同樣是傳統(tǒng)Swift組件之一,之后再也不需要通過Representable 適配了

13. Gauge

范圍型標(biāo)識組件,圖中表示為PH值測試(圓圈)


14. Namespace

同一組數(shù)據(jù)集可以通過.matchGeometryEffect 修飾被劃分到不同的View組件中。如圖中商量兩組圖片,支持通過拖動實現(xiàn)的組轉(zhuǎn)移。


?15. Text

仍將是主要的文本展示組件,新版本擴展后支持直接在Text中插入Image? ?

16. System Accent Color

應(yīng)用能夠默認(rèn)應(yīng)用系統(tǒng)主題色

17.? Link - LPLinkView 的SwiftUI化

在原有功能的基礎(chǔ)上新增如下功能:

直接跳轉(zhuǎn)至另一App

以Widget的形式貼至桌面


18.? SignInWithAppleButton

新版本系統(tǒng)將大范圍推廣通過蘋果賬號登陸功能,在SwiftUI中甚至直接將這一行為封裝為一個完整的Button


- 總結(jié)

說點廢話:本次WWDC公布的對SwiftUI的內(nèi)容上的更新主要能概括為一下兩個方面:

對功能進行補足,保證SwiftUI能夠盡快在功能實現(xiàn)的范疇上向傳統(tǒng)Swift看齊,擺脫臃腫的Representable接合模式,脫離原生Swift獨立進行開發(fā)。

另一方面,SwiftUI也緊跟Apple各個系統(tǒng)的腳步,完全適配了新系統(tǒng)Widget 等組件。

不必多言,SwiftUI未來必然是iOS開發(fā)的主流框架。不光是因為支持實時預(yù)覽的preview模式將大幅改變移動應(yīng)用開發(fā)中視圖層和邏輯層的開發(fā)格局。更因為優(yōu)雅的聲明式和狀態(tài)驅(qū)動型框架更加貼合Apple一直以來的理念。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容