SwiftUI
是什麼
先打個比方:宣告式做法就像你只把"裝修好的房間該長什麼樣"描述給裝修師傅,由對方負責擺放,而不是你自己一件件地搬動傢俱。SwiftUI 是 Apple 的宣告式 UI(使用者介面,螢幕上看得見、可互動的部分)框架,用一套共享的工具集在所有 Apple 平臺上構建介面。你不再自己一步步修改檢視,而是描述給定狀態下 UI 應當呈現的樣子,框架會隨著狀態變化讓螢幕保持同步。它在 Xcode 中執行,配有即時預覽畫布,讓你在鍵入時就能看到變化。
優勢
- 宣告式且簡潔——比起較早的 UIKit/AppKit 方式,樣板程式碼大幅減少。
- 通過
@State、@Binding和 observation 實現由狀態驅動的自動更新。 - 即時預覽讓佈局迭代既快速又直觀。
- 一套框架以共享程式碼面向 iPhone、iPad、Mac、Watch 和 TV。
- 內建對動畫、無障礙、深色模式和動態字型的支援。
權衡取捨
- 較新的 (應用程式介面,可直接呼叫的現成構件)需要較新的 OS(作業系統,裝置的核心軟體,如 iOS 或 macOS)版本,如果你必須支援舊裝置,這可能是個問題。
- 對於高度定製或非同尋常的 UI,有時仍需退回到 UIKit/AppKit 互操作。
- 某些行為不透明,除錯佈局或狀態問題可能令人沮喪。
- 它演進迅速,因此示例可能在不同作業系統版本之間過時。
最適合
當你想快速推進、保持程式碼庫小巧並面向當前作業系統版本時,SwiftUI 是構建全新 Apple 平臺應用的恰當選擇。它與 Swift 的值型別和併發能力自然契合。
與 vibe coding 的契合度
SwiftUI 適合 AI 輔助構建,因為檢視是小巧、可組合、自包含的——便於模型生成,也便於你在預覽畫布中驗證。要求助手用 @State/@Observable 顯式建模螢幕狀態,把大檢視拆成小的子檢視,並以可標識(identifiable)的資料來驅動列表。為狀態保留唯一的真實來源,讓 binding 向下流動;這一條規則就能避免生成的 SwiftUI 程式碼中大部分的混亂。
import SwiftUI
struct CounterView: View {
@State private var count = 0
var body: some View {
VStack {
Text("\(count)").font(.largeTitle)
Button("Add") { count += 1 }
}
}
}