歡迎光臨
每天分享高質量文章

百行代碼變十行,蘋果SwiftUI可視化編程讓開發者驚呼完美

本文經機器之心(微信公眾號: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/

赞(0)

分享創造快樂