本文經機器之心(微信公眾號:almosthuman2014)授權轉載,禁止二次轉載
蘋果開發者大會 WWDC 2019 大會上除了「史上最難看 Mac 主機」、首次出現的 iPadOS 以外,我們還終於可以對飽受詬病的iTunes 說再見了。而對於開發者來說,新釋出的 SwiftUI 可能是最吸引人的特性,在 Craig Federighi 的演示中,我們可以輕鬆地把一百行的前端程式碼縮減到十幾行。
Swift 是蘋果於 2014 年釋出的全新開發語言,可與 Objective-C* 共同執行於 macOS 和 iOS 平臺,用於搭建基於蘋果平臺的應用程式。Swift 的設計以安全為出發點,以避免各種常見的程式設計錯誤類別。近年來,這種程式語言的熱度上升很快,甚至有人呼籲用它來代替 Python,作為 TensorFlow 支援的語言。
「取代 Python」並不只是說說而已。今年 4 月,谷歌在 GitHub 上開放了 Swift for TensorFlow 專案。
既然 Swift 語言已經這麼有潛力了,那麼我們難道不應該給它加入更多的特性,助它一臂之力嗎?今天蘋果就為 Switf 前端程式設計插上了翅膀,其最新釋出的 SwiftUI 是一個基於 Swift 語言的、創新而又極為簡單的使用者介面解決方案,各種平臺上的應用都能用它打造精緻的使用者介面。
SwiftUI 使用統一的一套工具和 API,即可建立在任意蘋果裝置使用的使用者介面。透過定義一個易讀易寫的宣告式 Swift 語法,SwiftUI 可以順暢的和 Xcode 工具一起完成設計工作。SwiftUI 自動支援動態字型調整(Dynamic Type)、暗黑樣式(Dark Mode)、本地化(localization)和輔助功能(accessibility),這意味著開發者的第一行 SwiftUI 程式碼是他們目前寫出的功能最強大的 UI 程式碼。
-
官方教程:https://developer.apple.com/tutorials/swiftui/
-
官方檔案:https://developer.apple.com/documentation/swiftui/
SwiftUI 的特點是什麼
SwiftUI 使用宣告式語法,所以我們可以簡單地宣告使用者介面的樣式。例如,開發者可以宣告需要由一串文字輸入框構成的元件,然後定義每一個輸入框的字型對齊方式、字型樣式、字型顏色。這些程式碼比以往更加易懂,省時並易於維護。
這種宣告式的方式甚至允許使用複雜的功能,如動畫(animation)。只需要幾行程式碼,即可新增動畫在任何控制元件上,並且可以使用易於呼叫的特效。在執行時,SwifthUI 會自行控制建立流暢動作的所有步驟,並且可以解決程式衝突,保證 app 穩定執行。動畫特效變得如此容易,我們可以發掘使 app 更加靈動的方式。
只需一次就能定義佈局
開發者只需定義檢視(view)中內容和佈局,SwiftUI 懂得什麼時候需要改變,並可以隨時更新(檢視)以匹配設計。
建立可復用的元件
組合小而簡單的檢視,構成更大更複雜的介面。檢視可以在任何一處蘋果裝置和平臺共享。
簡化動畫構建
建立流暢的動畫效果十分簡單,如同宣告一個簡單的方法。SwiftUI 可以在需要的時候自動計算並渲染。
設計工具
Xcode 11 內建了非常直觀的新設計工具,我們可以透過 SwiftUI 使用拖放等簡單操作而構建介面。當我們在設計面板時,我們編輯的所有內容都與左邊編輯器的程式碼完全同步。當我們修改預覽(preview)時,對應程式碼可實時生成,也就是說我們對預覽修改的內容能實時體現在程式碼中。Xcode 會立即重新編譯你的修改,並將它們插入到 APP 的執行版中。因此在整個開發中,預覽視覺化與程式碼可編輯效能同時支援並互動。
如上所示為 SwiftUI 的程式碼與預覽部分,它們之間是可以實時互動的。總體而言,這種新型工具主要有以下三大特點:
拖拽:透過簡單拖拽 Canvas 上的控制元件來排列使用者介面上的各種元件。單機開啟檢查器(inspector)以選擇字型、顏色、對齊方式和其它設計選項,我們也可以透過游標輕鬆重新排列控制元件。這些視覺編輯器在程式碼編輯器中也能用,所以我們可以使用檢查器挖掘每個控制元件的不同選項,即使在介面的手動程式設計部分也是一樣的。我們可以從庫中拖拽控制元件,再放入到設計面板或程式碼面板都是可以的。
動態替換:Swift 編譯器和執行時可以完全嵌入到 Xcode 中,所以我們的 APP 會一直處於構建和執行的狀態。我們看到的預覽介面並不是對使用者介面的近似,它就是我們的實時 APP。Xcode 會透過「動態替換」在實時 APP 中交換編輯的程式碼,這是 Swift 中的新特徵。
預覽:現在,我們可以建立任何 SwiftUI 檢視的一個或多個預覽,從而得到樣本資料,並配置幾乎使用者能看到的所有內容,例如大字型、定位或「暗黑樣式」等。預覽還能在任何裝置上以任何朝向展示我們的 UI。
GitHub 包管理也要支援 Swift
GitHub 有很多開源專案,但真正要做成包還是需要其它包管理工具,因此 GitHub 希望能直接根據原始碼釋出公有或私有包。在蘋果釋出 SwiftUI 的同時,Github5 月份提出的 Github Package Registry 將進一步支援 Swift 包,此前它已經支援 JavaScript(npm)、 Java(Maven)等耳熟能詳的工具。
Swift 包使開發者可以更簡單的在不同的專案之間,以及 Swift 社群共享工具和原始碼。Swift 包管理器(Swift Package Manager),是一個跨平臺的構建、執行、測試和打包你的 Swift 程式碼的工具,現已在 Github 開源。包的資訊已經寫入 Swift,使我們可以更好地管理 Swift 中的 Target 、宣告 Product,並管理相關環境依賴。Swift 包管理器和 Github 包串列協作可以幫助開發者更容易釋出自己的 Swift 專案。
使移動端開發者有更高效的生產力工具也十分重要。隨著 Swift 生態環境的增長壯大,能夠和蘋果團隊一起合作完成 Swift 開發工具流使 GitHub 的開發者非常興奮。在 Swift 包管理專案上線後,我們可以更加便捷地構建和呼叫不同的開源工作。
參考連結:
-
https://developer.apple.com/xcode/swiftui/
-
https://github.com/apple/swift
-
https://github.blog/2019-06-03-github-package-registry-will-support-swift-packages/
朋友會在“發現-看一看”看到你“在看”的內容