百行代碼變十行,蘋果SwiftUI可視化編程讓開發(fā)者感嘆完美(apple swift 編程)

蘋果開發(fā)者大會(huì) WWDC 2019 在北京時(shí)間今天凌晨開幕。在這場(chǎng)大會(huì)上除了「史上最難看 Mac 主機(jī)」、首次出現(xiàn)的 iPadOS 以外,我們還終于可以對(duì)飽受詬病的iTunes 說(shuō)再見(jiàn)了。而對(duì)于開發(fā)者來(lái)說(shuō),新發(fā)布的 SwiftUI 可能是最吸引人的特性,在 Craig Federighi 的演示中,我們可以輕松地把一百行的前端代碼縮減到十幾行。

Swift 是蘋果于 2014 年發(fā)布的全新開發(fā)語(yǔ)言,可與 Objective-C* 共同運(yùn)行于 macOS 和 iOS 平臺(tái),用于搭建基于蘋果平臺(tái)的應(yīng)用程序。Swift 的設(shè)計(jì)以安全為出發(fā)點(diǎn),以避免各種常見(jiàn)的編程錯(cuò)誤類別。近年來(lái),這種編程語(yǔ)言的熱度上升很快,甚至有人呼吁用它來(lái)代替 Python,作為 TensorFlow 支持的語(yǔ)言。

百行代碼變十行,蘋果SwiftUI可視化編程讓開發(fā)者感嘆完美(apple swift 編程)

「取代 Python」并不只是說(shuō)說(shuō)而已。今年 4 月,谷歌在 GitHub 上開放了 Swift for TensorFlow 項(xiàng)目。

既然 Swift 語(yǔ)言已經(jīng)這么有潛力了,那么我們難道不應(yīng)該給它加入更多的特性,助它一臂之力嗎?今天蘋果就為 Switf 前端編程插上了翅膀,其最新發(fā)布的 SwiftUI 是一個(gè)基于 Swift 語(yǔ)言的、創(chuàng)新而又極為簡(jiǎn)單的用戶界面解決方案,各種平臺(tái)上的應(yīng)用都能用它打造精致的用戶界面。

SwiftUI 使用統(tǒng)一的一套工具和 API,即可創(chuàng)建在任意蘋果設(shè)備使用的用戶界面。通過(guò)定義一個(gè)易讀易寫的聲明式 Swift 語(yǔ)法,SwiftUI 可以順暢的和 Xcode 工具一起完成設(shè)計(jì)工作。SwiftUI 自動(dòng)支持動(dòng)態(tài)字體調(diào)整(Dynamic Type)、暗黑模式(Dark Mode)、本地化(localization)和輔助功能(accessibility),這意味著開發(fā)者的第一行 SwiftUI 代碼是他們目前寫出的功能最強(qiáng)大的 UI 代碼。

百行代碼變十行,蘋果SwiftUI可視化編程讓開發(fā)者感嘆完美(apple swift 編程)

  • 官方教程:https://developer.apple.com/tutorials/swiftui/
  • 官方文檔:https://developer.apple.com/documentation/swiftui/

SwiftUI 的特點(diǎn)是什么

SwiftUI 使用聲明式語(yǔ)法,所以我們可以簡(jiǎn)單地聲明用戶界面的樣式。例如,開發(fā)者可以聲明需要由一串文本輸入框構(gòu)成的組件,然后定義每一個(gè)輸入框的字體對(duì)齊方式、字體樣式、字體顏色。這些代碼比以往更加易懂,省時(shí)并易于維護(hù)。

這種聲明式的方式甚至允許使用復(fù)雜的功能,如動(dòng)畫(animation)。只需要幾行代碼,即可添加動(dòng)畫在任何控件上,并且可以使用易于調(diào)用的特效。在運(yùn)行時(shí),SwifthUI 會(huì)自行控制創(chuàng)建流暢動(dòng)作的所有步驟,并且可以解決程序沖突,保證 app 穩(wěn)定運(yùn)行。動(dòng)畫特效變得如此容易,我們可以發(fā)掘使 app 更加靈動(dòng)的方式。

只需一次就能定義布局

開發(fā)者只需定義視圖(view)中內(nèi)容和布局,SwiftUI 懂得什么時(shí)候需要改變,并可以隨時(shí)更新(視圖)以匹配設(shè)計(jì)。

百行代碼變十行,蘋果SwiftUI可視化編程讓開發(fā)者感嘆完美(apple swift 編程)

建立可復(fù)用的組件

組合小而簡(jiǎn)單的視圖,構(gòu)成更大更復(fù)雜的界面。視圖可以在任何一處蘋果設(shè)備和平臺(tái)共享。

百行代碼變十行,蘋果SwiftUI可視化編程讓開發(fā)者感嘆完美(apple swift 編程)

簡(jiǎn)化動(dòng)畫構(gòu)建

創(chuàng)建流暢的動(dòng)畫效果十分簡(jiǎn)單,如同聲明一個(gè)簡(jiǎn)單的方法。SwiftUI 可以在需要的時(shí)候自動(dòng)計(jì)算并渲染。

百行代碼變十行,蘋果SwiftUI可視化編程讓開發(fā)者感嘆完美(apple swift 編程)

設(shè)計(jì)工具

Xcode 11 內(nèi)建了非常直觀的新設(shè)計(jì)工具,我們可以通過(guò) SwiftUI 使用拖放等簡(jiǎn)單操作而構(gòu)建界面。當(dāng)我們?cè)谠O(shè)計(jì)面板時(shí),我們編輯的所有內(nèi)容都與左邊編輯器的代碼完全同步。當(dāng)我們修改預(yù)覽(preview)時(shí),對(duì)應(yīng)代碼可實(shí)時(shí)生成,也就是說(shuō)我們對(duì)預(yù)覽修改的內(nèi)容能實(shí)時(shí)體現(xiàn)在代碼中。Xcode 會(huì)立即重新編譯你的修改,并將它們插入到 APP 的運(yùn)行版中。因此在整個(gè)開發(fā)中,預(yù)覽可視化與代碼可編輯性能同時(shí)支持并交互。

百行代碼變十行,蘋果SwiftUI可視化編程讓開發(fā)者感嘆完美(apple swift 編程)

如上所示為 SwiftUI 的代碼與預(yù)覽部分,它們之間是可以實(shí)時(shí)交互的??傮w而言,這種新型工具主要有以下三大特點(diǎn):

拖拽:通過(guò)簡(jiǎn)單拖拽 Canvas 上的控件來(lái)排列用戶界面上的各種組件。單機(jī)打開檢查器(inspector)以選擇字體、顏色、對(duì)齊方式和其它設(shè)計(jì)選項(xiàng),我們也可以通過(guò)光標(biāo)輕松重新排列控件。這些視覺(jué)編輯器在代碼編輯器中也能用,所以我們可以使用檢查器挖掘每個(gè)控件的不同選項(xiàng),即使在界面的手動(dòng)編程部分也是一樣的。我們可以從庫(kù)中拖拽控件,再放入到設(shè)計(jì)面板或代碼面板都是可以的。

動(dòng)態(tài)替換:Swift 編譯器和運(yùn)行時(shí)可以完全嵌入到 Xcode 中,所以我們的 APP 會(huì)一直處于構(gòu)建和運(yùn)行的狀態(tài)。我們看到的預(yù)覽界面并不是對(duì)用戶界面的近似,它就是我們的實(shí)時(shí) APP。Xcode 會(huì)通過(guò)「動(dòng)態(tài)替換」在實(shí)時(shí) APP 中交換編輯的代碼,這是 Swift 中的新特征。

預(yù)覽:現(xiàn)在,我們可以創(chuàng)建任何 SwiftUI 視圖的一個(gè)或多個(gè)預(yù)覽,從而得到樣本數(shù)據(jù),并配置幾乎用戶能看到的所有內(nèi)容,例如大字體、定位或「暗黑模式」等。預(yù)覽還能在任何設(shè)備上以任何朝向展示我們的 UI。

GitHub 包管理也要支持 Swift

GitHub 有很多開源項(xiàng)目,但真正要做成包還是需要其它包管理工具,因此 GitHub 希望能直接根據(jù)源代碼發(fā)布公有或私有包。在蘋果發(fā)布 SwiftUI 的同時(shí),Github5 月份提出的 Github Package Registry 將進(jìn)一步支持 Swift 包,此前它已經(jīng)支持 JavaScript(npm)、 Java(Maven)等耳熟能詳?shù)墓ぞ摺?/p>

Swift 包使開發(fā)者可以更簡(jiǎn)單的在不同的項(xiàng)目之間,以及 Swift 社區(qū)共享工具和源代碼。Swift 包管理器(Swift Package Manager),是一個(gè)跨平臺(tái)的構(gòu)建、運(yùn)行、測(cè)試和打包你的 Swift 代碼的工具,現(xiàn)已在 Github 開源。包的信息已經(jīng)寫入 Swift,使我們可以更好地管理 Swift 中的 Target 、聲明 Product,并管理相關(guān)環(huán)境依賴。Swift 包管理器和 Github 包列表協(xié)作可以幫助開發(fā)者更容易發(fā)布自己的 Swift 項(xiàng)目。

使移動(dòng)端開發(fā)者有更高效的生產(chǎn)力工具也十分重要。隨著 Swift 生態(tài)環(huán)境的增長(zhǎng)壯大,能夠和蘋果團(tuán)隊(duì)一起合作完成 Swift 開發(fā)工具流使 GitHub 的開發(fā)者非常興奮。在 Swift 包管理項(xiàng)目上線后,我們可以更加便捷地構(gòu)建和調(diào)用不同的開源工作。

參考鏈接:

  • https://developer.apple.com/xcode/swiftui/
  • https://github.com/apple/swift
  • https://github.blog/2019-06-03-github-package-registry-will-support-swift-packages/

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢
分享本頁(yè)
返回頂部