SwiftUI是為Apple平臺(tái)創(chuàng)建用戶界面的現(xiàn)代化框架,以前所未有的速度創(chuàng)建漂亮、動(dòng)態(tài)的應(yīng)用程序。那么,SwiftUI解決了哪些痛點(diǎn)?帶來(lái)哪些好處?代碼風(fēng)格如何?敬請(qǐng)閱讀本文。
剛剛結(jié)束的蘋果WWDC推出了一個(gè)對(duì)于開(kāi)發(fā)者非常重要的框架:SwiftUI。
SwiftUI是一個(gè)非常方便快速的構(gòu)建UI的框架,與最新Xcode設(shè)計(jì)工具無(wú)縫協(xié)作,可為所有蘋果設(shè)備構(gòu)建UI。開(kāi)發(fā)者通過(guò)SwiftUI,利用Swift語(yǔ)法就能夠完成代碼和設(shè)計(jì)的同步。
Swift是蘋果最新的開(kāi)發(fā)語(yǔ)言,有人呼吁谷歌取代TensorFlow的Python。目前在TOIBE排名18位:

在RedMond排名11

SwiftUI還提供對(duì)動(dòng)態(tài)類型、暗黑模式、本地化和可訪問(wèn)性的自動(dòng)支持。
SwiftUI都更新了什么?
此次更新主要有5點(diǎn):
聲明式:更加易讀的代碼。這意味著編寫代碼時(shí)候,我們說(shuō)出需要的東西,而不需要考慮如何實(shí)現(xiàn)
自動(dòng)化:這意味著我們以前必須手工完成的許多事情,現(xiàn)在可以讓SwiftUI自動(dòng)完成
組合:構(gòu)建小模塊,然后通過(guò)將這些小的功能模塊組合起來(lái)完成更復(fù)雜的任務(wù)
一致性:這意味著Swift和Objective-C之間不會(huì)再看到奇怪的錯(cuò)誤,或者非常舊的API與新API的混合
簡(jiǎn)潔:可以節(jié)省10%-20%的代碼量
如果你剛剛接觸SwiftUI,剛開(kāi)始你可能需要適應(yīng)一下UIKit的獨(dú)特風(fēng)格,一旦你適應(yīng)了,接下來(lái)的過(guò)程就一馬平川了。
SwiftUI解決了哪些問(wèn)題?
雖然Storyboards和XIB很有用,但并不是所有人都喜歡。比如在使用源碼控制時(shí)就很麻煩,會(huì)導(dǎo)致代碼和可視化布局之間移動(dòng)變得非常困難;使用動(dòng)作和outlets時(shí)過(guò)于依賴flaky系統(tǒng)的連接。
而SwiftUI通過(guò)4種方式,解決了上述問(wèn)題:
用一個(gè)新的聲明式UI結(jié)構(gòu),定義了的布局的外觀和工作方式
更新UI預(yù)覽會(huì)自動(dòng)生成新的Swift代碼,反之,更改Swift代碼也會(huì)更新UI預(yù)覽
Swift中的任何綁定例如有效的outlets和操作,都會(huì)在編譯時(shí)進(jìn)行檢查,因此在運(yùn)行時(shí)不會(huì)出現(xiàn)UI失敗的風(fēng)險(xiǎn)
雖然背后使用來(lái)自UIKit和AppKit的控件,但SwiftUI凌駕于二者之上,能夠有效地使底層UI框架成為一個(gè)實(shí)現(xiàn)細(xì)節(jié),不需要我們特別去關(guān)心
SwiftUI帶來(lái)了哪些好處?
讓Xcode for iPad更上一層樓
開(kāi)發(fā)者對(duì)Interface Builder的抱怨不是一天兩天了,它大大增加了分解視圖塊以及從視圖控制器(view controller)使用視圖的工作量,導(dǎo)致出現(xiàn)體積臃腫的視圖控制器,編輯起來(lái)也如同噩夢(mèng)。
此前,無(wú)論什么尺寸屏幕的iPad,總是很難將Interface Builder的大小放到iOS上。而擁有更簡(jiǎn)單,更快速,更安全的SwiftUI為開(kāi)發(fā)人員實(shí)現(xiàn)真正的平***立性邁出了一大步。
人人都能編程
SwiftUI繼承了Swift的理念:每個(gè)人都可以編程。現(xiàn)在,一個(gè)全新的用戶界面系統(tǒng)誕生,有助于避免新開(kāi)發(fā)人員遇到的大量問(wèn)題。
盡可能的依賴工具
通過(guò)消除源碼控制的痛點(diǎn)、消除對(duì)UIKit的嚴(yán)重依賴、消除Interface Builder可能遇到的一些連接混淆,蘋果希望開(kāi)發(fā)者更多的使用Swift,盡可能的依賴工具而不是糾結(jié)于一些不必要的事情。
感受一下SwiftUI的代碼風(fēng)格
Github一個(gè)repo整理了在WWDC 2019發(fā)布的SwiftUI布局框架的一些官方示例:
SwiftUI Essentials
創(chuàng)建和組合視圖:
創(chuàng)建列表和導(dǎo)航欄:
處理用戶輸入:
Drawing and Animation
繪圖路徑和形狀:
動(dòng)畫視圖和過(guò)渡
App Design and Layout
復(fù)雜界面組合:
使用 UIControls:
Framework Integration
使用 UIKit:
使用SwiftUI之前要注意的事情
首先,SwiftUI目前只支持10.15 beta以及更新的macOS系統(tǒng),當(dāng)然10.15 beta已經(jīng)是目前最新了。
其次一些可能出現(xiàn)的小問(wèn)題也是需要注意的。比如,它只支持Swift,你不能在Obj-C里使用SwiftUI;SwiftUI目前還不是很成熟,正在從事iOS開(kāi)發(fā)的程序員可能更應(yīng)該繼續(xù)使用Obj-C,直到SwiftUI足夠成熟。
-
蘋果
+關(guān)注
關(guān)注
61文章
24583瀏覽量
206782 -
框架
+關(guān)注
關(guān)注
0文章
404瀏覽量
18280 -
可視化
+關(guān)注
關(guān)注
1文章
1302瀏覽量
22517
原文標(biāo)題:蘋果全新UI框架來(lái)了!可視化編程,自動(dòng)化減少20%代碼量
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
曙光網(wǎng)絡(luò)SugonRI開(kāi)發(fā)者社區(qū)正式上線
電商API入門問(wèn)答:開(kāi)發(fā)者必知的10個(gè)基礎(chǔ)問(wèn)題
NVIDIA Isaac Sim和Isaac Lab現(xiàn)已推出早期開(kāi)發(fā)者預(yù)覽版
云端AI開(kāi)發(fā)者工具的核心功能
當(dāng)平臺(tái)工程遇上DevEx:打造卓越的開(kāi)發(fā)者體驗(yàn)

蘋果WWDC推出了一個(gè)對(duì)于開(kāi)發(fā)者非常重要的框架:SwiftUI
評(píng)論