當前位置:
首頁 > 知識 > 百行代碼變十行,蘋果SwiftUI可視化編程讓開發者驚呼完美

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

機器之心報道

機器之心編輯部

蘋果開發者大會 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/

深度Pro

理論詳解 | 工程實踐 | 產業分析 | 行研報告

機器之心最新上線深度內容欄目,匯總AI深度好文,詳解理論、工程、產業與應用。這裡的每一篇文章,都需要深度閱讀15分鐘。

今日深度推薦

萬字綜述,核心開發者全面解讀PyTorch內部機制

關於GAN的靈魂七問

AI新貴上位記:圖網路是怎麼火起來的?

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

MIT發明10美元AI觸覺手套:識別物體,又能稱重,論文已上Nature
從相機標定到SLAM,極簡三維視覺六小時課程視頻(附PPT)

TAG:機器之心 |