引言
不出所料,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一直以來的理念。