版權所有, 未經出版商書面許可,不得以任何方式使用,複製,存儲或傳播本書的任何內容。
AppCoda Limited 出版
序言
坦白說,我沒有預料到 Apple 在 WWDC 2019 中會有完全改變我們為 Apple 平台建立 UI 的方式的重大宣布。大概三年前, Apple 隨著 Xcode 11 一起發布了一個名為「SwiftUI」的全新框架。 SwiftUI 的推出, 對於目前的 iOS 開發人員或即將學習打造 iOS App 的人而言,確實是一個重大的契機。毫無疑問的,這是近年來 iOS App 開發最大的改變。
我從事 iOS 程式開發已經超過 10 年了,已經習慣使用 UIKit 進行開發。我喜歡混合使用故事板與 Swift 程式碼來建立UI,但無論你是喜歡使用介面建構器還是完全使用程式碼來建立 UI,在 iOS 開發 UI 的方式並沒有多大的變化,一切仍然依賴 UIKit 框架。
對我而言,SwiftUI 不僅是一個新框架,而是一個典範轉移(paradigm shift ),從根本上改變你對 iOS 與其他Apple 平台的 UI 開發方式的看法。Apple 目前提倡使用宣告式/ 函數式程式設計風格取代指令式程式設計風格,你不再確切指定 UI 元件的佈局和功能,反而著重於描述在建立 UI 時所需要的元素,以及以宣告式程式設計時應執行的操作。
如果你有實作過 React Native 或 Flutter 的經驗,你會發現彼此之間的程式風格有些相似性,並且可能會發現以SwiftUI 來建立 UI 會更容易些。儘管如此,即使你之前沒有使用任何函數式程式設計語言開發的經驗,也只需要花費一些時間來習慣這些語法。當你具備了基礎知識之後,你將會喜歡以 SwiftUI 來編寫複雜佈局與動畫的簡便性。今年,隨著 Xcode 14 的發布,Apple 於 SwiftUI 框架中,加入了更多的功能與 UI 元件,著實將 iOS、iPad 與 macOS 的 UI 開發帶入另一個階段,你可以使用更少的程式碼來開發一些酷炫的動畫,更重要的是,最新的框架可以讓開發者開發適用Apple各式平台的 App,透過本書你將了解我所表述的內容。
SwiftUI 的發布並不表示介面建構器與 UIKit 會馬上棄用,它們將繼續存在許多年。不過,SwiftUI 是Apple 平台上應用程式開發的未來。為了始終走在技術創新的前端,是時候開始準備這個UI 開發的新方式,我希望本書可幫助你開始進行 SwiftUI 的開發,並建立一些令人耳目一新的UI。
Simon Ng
AppCoda 創辦人
關於本書
我們將會深入探討 SwiftUI 框架,教你如何使用各種 UI 元件以及建立不同類型的 UI。有了基礎知識,並了解這些通用元件的用法之後,我們會將你所學到的內容放在一起,你將學會如何建立一個完整的應用程式。
跟往常一樣,我們將會使用「從做中學」的方式來探索 SwiftUI。這本新書集合了許多實作練習與專案,但不要認為只要閱讀本書即可掌握全部,你需要做好撰寫程式碼並除錯的準備。
目標讀者
本書是為具有 iOS 程式設計的初學者與開發者所編寫。即使你之前有過 iOS App 的開發經驗,本書也將幫助你了解這個全新的框架以及開發 UI 的新方式,你還將學習如何以 SwiftUI 來整合 UIKit。
使用 Swift UI 開發 App 所需要的準備
使用 Mac 電腦是 iOS 開發一個基本配備。要使用 SwiftUI,你的 Mac 電腦需要安裝 macOS Catalina 與Xcode 11(或以上的版本),不過,為了跟著本書的內容來練習,您需要安裝 Xcode 14 。
如果你是 iOS App 開發新手,Xcode 是一個由Apple 所提供的整合開發環境(IDE)。Xcode 提供所有 App 開發所需要的一切環境,它已經綁定最新版的 iOS SDK(Software Development Kit,軟體開發套件),內建原始碼編輯器、圖形使用者介面(UI)編輯器、除錯工具與其他更多的功能。最重要的是,Xcode 內建了iPhone(與iPad )模擬器,讓你可以不需要實機,也能測試你的 App。Xcode 14 可以讓你即時預覽 SwiftUI 程式碼的結果。
安裝 Xcode
要安裝 Xcode,請至 Mac App Store 下載它。只要搜尋「Xcode」,並點選「取得」按鈕來下載。在本書撰寫的期間,最新的 Xcode 版本是 14.0,完成安裝之後,你會在 Launchpad 找到 Xcode。
關於 SwiftUI 的常見問題
當 SwiftUI 框架初次推出時,許多初學者向我詢問問題。我想和你一同分享這些常見問題,並且希望這些答案可以讓你對 SwiftUI 更加了解。
在學習 SwiftUI之前是否需要先學習 Swift?
是的,使用 SwiftUI 之前,你仍需要了解 Swift 程式語言的觀念。SwiftUI 只是一個以 Swift 編寫的UI框架。這裡的關鍵字是 UI,表示此框架為了建立使用者介面而設計的。不過,對於一個完整的應用程式,除了 UI,還有許多其他元件,例如:連結遠端伺服器的網路元件、從內部資料庫載入資料的資料元件、處理資料流程的商業邏輯元件(business logic component)等。所有這些元件都不是使用 SwiftUI 建立的。因此,你應了解Swift、SwiftUI以及其他內建的框架(如Map),才能建立一個 App。
我應要學習 SwiftUI 還是 UIKit ?
簡短的回答是兩者皆需要學習,不過這完全取決於你的目標而定。如果你打算成為一個專業的 iOS 開發者,並取得 iOS 開發的工作,則最好具備 SwiftUI 與 UIKit 的知識,在 App Store 發布的 App,有超過 90% 是使用UIKit 來建立。為了就業市場的考量,你需要熟悉UIKit,因為大部分的公司仍是使用這個框架來建立 App UI。不過,就像日新月異的技術發展,公司將在新專案中逐步採用 SwiftUI,這也是為何你需要學習這兩種技術,以提升你的就業機會。
另一方面,如果你只想為個人使用或副專案開發 App,則你可以完全使用 SwiftUI 來開發。不過,由於SwiftUI 還非常新,目前尚未涵蓋在UIKit 中可到的所有UI 元件。在某些情況下,你可能需要整合 UIKit 與SwiftUI。
我需要學習自動佈局嗎 ?
或許對你來說,這可能是一個好消息。許多初學者發現使用自動佈局是一件苦差事。有了 SwiftUI,你不再需要定義佈局約束條件,而是使用堆疊、留白與間距來進行佈局。
想更深入學習SwiftUI和下載完整程式碼?你可以從 AppCoda網站購買《精通 SwiftUI》完整電子版。