當前位置:
首頁 > 知識 > 蘋果 SwiftUI 踢館穀歌 Flutter

蘋果 SwiftUI 踢館穀歌 Flutter

蘋果 SwiftUI 踢館穀歌 Flutter

作者 | 屠敏&伍杏玲

出品 | CSDN(CSDNnews)

相信大家已經瀏覽完蘋果 2019 開發者大會上幾大新發布:價格令人咂舌的新款MacPro、iPad喜提自己的 OS 系統、新版 iOS 13 秒變「黑寡婦」模式,macOS 替代 iTunes 等。在大會的壓軸環節里,蘋果宣布一個重磅消息:

蘋果全新的 UI 框架——SwiftUI 來了!

早在2017年,Google 推出了移動 UI 框架 Flutter,便於開發者在 iOS 和 Android 系統上快速構建高質量的原生用戶界面。

那麼失去先發之勢、只支持蘋果系統的 SwiftUI 具備哪些出彩的特性呢?

拖拽控制項生成代碼,所見即所得不再是夢!

據官網介紹,SwiftUI 是基於 Swift 語言,使用一組工具和 API 可在所有的蘋果平台上構建用戶界面。由於 SwiftUI 擁有易讀、自然編寫的聲明式 Swift 語法,這可與 Xcode 一起協同代碼的設計。SwiftUI 具有自動支持動態類型、暗黑模式、本地化和可訪問性的特點。

會上,蘋果公司軟體工程高級副總裁 Craig Federighi 演示了如何用 SwiftUI 將一百行代碼簡化為只有十幾行。

看起來 SwiftUI 操作簡便,那麼開發者可以所見即所得,不用寫代碼控制了嗎?一起來看看它的特性:

一、聲明性語法

SwiftUI 使用聲明性語法,開發者可以簡單地說明用戶界面應該長什麼樣的。例如,當你寫一個視圖時,可以寫一個 List,裡頭再描述每個欄位的對齊方式、字體和顏色。

這樣的代碼比以前更簡單,易於閱讀,也節省開發時間和維護成本。

這種聲明式風格也適用於複雜的功能上,如動畫。之前對於開發者來說,動畫是較頭疼的功能,即使用了 Lottie 動畫第三方庫,一位 iOS 開發者表示,用傳統 Objective-C 寫的話大概需要 10 行代碼。

通過 SwiftUI,只用幾行代碼便可輕鬆地將動畫添加到幾乎所有控制項中。

蘋果 SwiftUI 踢館穀歌 Flutter

繪製動畫,圖源https://github.com/Jinxiansen/SwiftUI

在運行時,系統會創建平滑移動所需的所有步驟,甚至在中斷時,能保持App繼續穩定使用。

二、設計工具

Xcode 11自帶有設計工具,配合 SwiftUI 使用的話,可通過拖拽來構建界面。

當開發者在右邊的設計畫布區編輯時,其所有內容都與左邊的編輯器中的代碼完全同步。

代碼在鍵入時立即顯示為預覽,此時開發者對該預覽所做的任何更改都會立即顯示在代碼中。並且 Xcode 會立即重新編譯更改代碼,將其插入到應用程序的運行版本中,實時所見即所得,還可編輯。

蘋果 SwiftUI 踢館穀歌 Flutter

  • 拖放功能

現在開發者只需拖動畫布上的控制項,便可在用戶界面中排列組件。打開檢查器,選擇字體、顏色、對齊方式或其他的設計選項,開發者還可以使用游標重新排列控制項。

這些可視化編輯器也可以在代碼編輯器中使用,如果開發者更喜歡手動編碼界面的話,可使用檢查器為每個控制項發現新的修改器。還可以從庫中拖出控制項,直接將其拖放到設計畫布上,或直接加在代碼上。

  • 動態更換功能

由於 Swift 編譯器是在 Xcode 中編輯和運行的,所以開發中的 App 會實時地構建和運行。

開發者看到的設計畫布不是與真實的用戶界面相近,它是一個實時 App。Xcode 可以直接在這個實時 App 中使用「動態替換」的方式來更換已編輯的代碼,這也是 Swift 的一個新功能。

  • 預覽

開發者可以在 SwiftUI 視圖下,創建一個或多個預覽,來獲取示例的數據。還可以配置用戶幾乎可能看到的各類內容,例如大字體、本地化或「暗黑模式」。

當然,預覽可以發給任何蘋果設備,也可以在任何方向上顯示開發的 UI。

總的來說,SwiftUI 使用更少的代碼,更優的交互方式來供開發者設計 UI。

GitHub Package Registry 將支持 Swift 包

隨著 Swift 越來越廣泛的應用,6 月3 日,GitHub 宣布:GitHub Package Registry 要支持 Swift 包了!

早在5月10日,GitHub 已公布 GitHub Package Registry 的測試版,這是一種軟體包管理服務,可以輕鬆地在源代碼旁發布公共或私有軟體包。目前 GitHub Package Registry已支持有:JavaScript(npm)、Java(Maven)、Ruby(RubyGems)、.NET(NuGet)和Docker等。

蘋果 SwiftUI 踢館穀歌 Flutter

這樣,Swift包可以讓開發者輕鬆地在項目和Swift社區中共享庫和源代碼。據介紹, Swift 包管理是 GitHub 上提供,用於構建、運行、測試、打包Swift代碼的跨平台工具。這個軟體包配置是用 Swift 編寫的,可以讓開發者輕鬆地配置 Target,聲明產品和管理各種依賴關係。

以後通過 Swift 包管理和 GitHub Package Registry,開發者可以更輕鬆地發布和管理 Swift 軟體包。

那麼後發兩年的 SwiftUI 和 Flutter相比,可以後來追上嗎?聲明式 UI 編程會是未來趨勢嗎?

對此,CSDN(ID:CSDNnews)採訪抖音 iOS 工程師黃文臣來給我們具體分析。

SwiftUI 硬傷:只用於蘋果生態

聲明式編程是未來

CSDN:如何評價蘋果最新發布的 SwiftUI?

黃文臣:SwiftUI 是為 iOS/macOS/tvOS 等 Apple 生態提供一套統一的UI框架。對於寫 iOS 的同學,假如去開發 macOS,就不需要再學一次 AppKit 了,降低了蘋果生態下跨平台的門檻。並且 Xcode 11 針對 SwiftUI 還提供了熱載入 和 preview,能夠大幅度提高UI開發效率。SwiftUI 提供了一種聲明式的 UI 編寫方式,結合新推出的響應式框架(Combine),iOS 生態下終於可以像 Flutter、React 那樣寫代碼了。

CSDN:從你個人角度來看,蘋果為什麼會推出 SwiftUI?和 Google 的 Flutter 做個對比?

黃文臣:iOS/iPadOS/MacOS 系統的差異會越來越大,提供了這樣一套統一的 UI,有利於開發者為蘋果生態貢獻跨平台的 App,這對於 macOS 這種 App 數量比較少的平台尤為重要。

Flutter 真正的解決了跨平台:iOS/Android/Web/Desktop,讓開發者能夠只學習一次,為多平台編寫應用。

SwiftUI 目前只是專註在蘋果生態,這是一個硬傷,不過 SwiftUI 還處在嬰兒階段,未來就看蘋果是否想要去支持其他平台了。

CSDN:在這樣的趨勢下,你覺得聲明式 UI 編程會是應用開發未來?

黃文臣:毫無疑問,聲明式編程是未來。

聲明式編程有幾個優點:

  • 代碼是描述程序在做什麼,可閱讀性會大大提高;
  • 組件狀態更容易維護在內部,減少副作用;
  • 組件之間的邊界更明顯,從而讓組件復用更靈活。

React、Flutter 包括剛出的 SwiftUI 都選擇了聲明式的 UI,從一個側面也印證了這一點。

Swift 開發者喜大普奔

你還在用 Objective-C 嗎?

那麼對於這款神器,普通開發者怎麼看呢?

@dimmke:

我想說一聲感謝,作為一名在業務時間學習 iOS 開發的網路開發人員,我之前是用編程的方式來構建視圖。

在我看來,將 IB 生成的 UI 內容存儲在 XML 的技術,是很老土的做法。我肯定期待它應該生成和自己變成寫的相同的代碼。

但是用編程的方式來構建 UI 的代碼,這是很非常複雜。現在 SwiftUI 看起來是這麼簡單和聲明性,對於未來想成為 App 開發一員的我來說,感覺更有希望了!

@fphilipe:

對於我這個 iOS 開發者來說,這是從業來迄今為止最大的一次宣布。

雖然還沒有機會深入研究,但將 UITableViewController 與僅包含聲明性代碼的片段進行比較,SwiftUI 看起來是比較有前景的。

唯一的缺點是,假如老的 iOS 版本仍然需要支持的話,我們必須等待一兩年才能使用它,讓我們期待 iOS 13 能更快地被用起來吧。

也有知名 iOS 開發者圖拉鼎提醒道:

如果說 2014 年 Apple 發布 Swift 1.0 是一個「嘗試」的話,那麼 2019 年 Apple 發布 Swift 5.0、Swift 5.1、SwiftUI、Combine……就是一個轉折了。

2014-2019 年,開發者可以無視 Swift,繼續用 Objective-C,也沒有啥影響(其實多少開始有了)。

但是 2019 年開始,一切都不一樣了,轉折正式開啟。

總的來說,SwiftUI的推出對於開發者來說是利好的,節約開發者的時間,提高代碼的可閱讀性。但蘋果比谷歌晚了兩年才推出這UI 框架,且與跨生態的 Flutter 不同的是,蘋果帶有一貫的封閉性,只能在自己單一的生態應用里用。未來 SwiftUI 是否能追趕 Flutter 需保留大大的問號。

另外,對於仍在使用 Objective-C,不願意接受 Swift 的開發者來說,SwiftUI 從在側面上證明 Swift 的流行與未來趨勢,對於這部分開發者來說,SwiftUI 的推出是改變的機遇也是挑戰。

官網介紹:

https://developer.apple.com/xcode/swiftui/

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

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


請您繼續閱讀更多來自 CSDN 的精彩文章:

五大行業會古都 華為賦能全行業開發者
百年 IBM 如何用代碼拯救生命

TAG:CSDN |