剑网3指尖江湖职业推荐 www.1468054.com

圖0:蘋果 SwiftUI 踢館谷歌 Flutter!

作者 | 屠敏&伍杏玲

出品 | CSDN(CSDNnews)

相信大家已經瀏覽完蘋果?2019?開發者大會上幾大新發布:價格令人咂舌的新款MacPro、iPad喜提自己的 OS 系統、新版 iOS 13 秒變“黑寡婦”模式,macOS 替代 iTunes 等。

在大會的壓軸環節里,蘋果宣布一個重磅消息:

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

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

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

圖1:蘋果 SwiftUI 踢館谷歌 Flutter!

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

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

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

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

一、聲明性語法

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

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

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

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

圖2:蘋果 SwiftUI 踢館谷歌 Flutter!

繪制動畫

圖源https://github.com/Jinxiansen/SwiftUI

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

二、設計工具

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

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

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

圖3:蘋果 SwiftUI 踢館谷歌 Flutter!

  • 拖放功能

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

這些可視化編輯器也可以在代碼編輯器中使用,如果開發者更喜歡手動編碼界面的話,可使用檢查器為每個控件發現新的修改器?;箍梢源涌庵型銑隹丶?,直接將其拖放到設計畫布上,或直接加在代碼上。

  • 動態更換功能

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

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

  • 預覽

開發者可以在 SwiftUI 視圖下,創建一個或多個預覽,來獲取示例的數據?;箍梢耘渲糜沒Ъ負蹩贍蕓吹降母骼嗄諶?,例如大字體、本地化或“暗黑模式”。

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

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

圖4:蘋果 SwiftUI 踢館谷歌 Flutter!

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等。

圖5:蘋果 SwiftUI 踢館谷歌 Flutter!

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

以后通過 Swift 包管理和 GitHub Package Registry,開發者可以更輕松地發布和管理 Swift 軟件包。

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

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

圖6:蘋果 SwiftUI 踢館谷歌 Flutter!

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,從一個側面也印證了這一點。

圖7:蘋果 SwiftUI 踢館谷歌 Flutter!
?

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/

【END】

余下全文(1/3)
分享這篇文章:

請關注我們:

發表評論

電子郵件地址不會被公開。 必填項已用*標注