昨天介紹完 SwiftUI 的環境,今天來了解一下 App、Scene、View 這三個 Protocol 吧。
在建立好專案之後,除了 App 畫面外,還會產生另一個 Swift 檔,而裡面的內容如下圖。
可以看到這裡是一個 Struct 遵循著 App 這個 Protocol,而且前面還用 @main 裝飾,這裡的 @main 代表這個 App 的進入點。
而裡面的 Scene 代表的是視窗,Scene 裡裝的 ContentView 代表你進入這個視窗後要顯示的畫面,而 Scene 有分成三種:
1. WindowGroup
大部分時候都是使用這個 Scene,在 iOS 及 mac 都能使用。
2. DocumentGroup
基本上與 WindowGroup 相同,通常是用在會產生檔案的 App 上,因為自動帶有文件的特性,例如:新增、刪除、儲存、開新檔案、開舊檔案等,也在 iOS 及 mac 都能使用。
3. Setting
通常是用在 mac 的 App 裡的工具列選擇 Preference 時會出現的設定視窗,只有在 mac 上才能使用。
我們需要在 body 裏面去描述畫面的樣子,body 也必須遵循 View 這個 Protocol。
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text("Hello, world!")
}
.padding()
}
}
然後,其實 body 裡的 VStack、Image、Text 等其實就是內建已經遵循 View 這個 Protocol 的類型。
想要知道有哪些 View 可以使用?點擊右上角的加號會出現這個畫面,這裡會列出所有你能使用的 View 以及 View 的用法及解說。
然後也能點開說明最下方的 Open in Developer Documentation,裡面會告訴你這個 View 最低支援的 iOS 版本是多少,更詳細的用法等。
到這邊都大致解說完 App、Scene、View 之間的關係及功能了,雖然某些地方與 Storyboard 類似,但是兩邊還是不太一樣的。
今天了解完三個 Protocol,明天來介紹 modeifier,也就是所謂的修飾器。