iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
Mobile Development

下班悠哉學 iOS 開發系列 第 23

【Day23】SwiftUI Essentials - SwiftUI 基礎

  • 分享至 

  • xImage
  •  

在這邊先聲明,這篇是是WWDC大會的部分翻譯,我找到的也是別人翻譯以及筆記的

文章,只是我覺得很適合讓邊學邊做的這類人更深入的了解Swift UI的整體

運作流程,所以我就貼在這邊,邊簡單的翻譯邊學。

原本的文章出處:SwiftUI Essentials - SwiftUI 基础

Data Flow Through SwiftUI - SwiftUI 中的数据流

SwiftUI 介绍

 SwiftUI 簡單來說是原本 UIKit 原有的控件再多加一些定製功能 

以更好的適應多平台的開發。

Views and Modifiers - 視圖和修飾

View 是圖形介面的基礎,每個 View 決定了 App 裡的一部分UI。

通過編寫聲明式 View 關係結構來完成對UI的設定。

(這邊也可以使用圖形介面的方式設定,算是殊途同歸)

https://ithelp.ithome.com.tw/upload/images/20211008/20092056pnhLGFAZQL.png
       Views and Modifiers - 視圖和修飾

View Container Syntax - 視圖容器語法

View 容器,以 VStack 為例,容器定義了內容裡的層級關係。 VStack 是透過

struct 設定,初始化函數內有著所有可設定的參數。

例如 Alignment,Spacing。在 swiftUI 裡通过 VStack(參數) 来初始化,

例如:VStack(alignment: .leading)。

https://ithelp.ithome.com.tw/upload/images/20211008/20092056fW4QZsbMnz.png
View Container Syntax - 視圖容器語法

Binding Syntax - 綁定語法

View 的 struct 中可以在變量前加上 @State,代表此變量能與其他的變量進行綁定。

只要在需綁定的變量前加上“$”即可,等下會詳細的介紹。
https://ithelp.ithome.com.tw/upload/images/20211008/20092056rXVXWOwAL5.png
Binding Syntax -綁定語法

Modifier - 修飾

在一個已有的 View 後面添加 .Modifier(參數)。SwiftUI 裡這類語法叫 Modifier。

它的功能是用自定義參數,從一個原始物件中設定出一個符合需求的物件。

https://ithelp.ithome.com.tw/upload/images/20211008/20092056nN3M1HTU5s.png
        Modifier - 修飾

SwiftUI 會按照 Modifier 的順序把 Modifier 貼加到物件中,

所以 Modifier 添加的順序會影響 View 最終的樣式。

SwiftUI 希望開發者使用模塊化的視圖以及物件,

每個視圖以及物件最好都有明確的樣式以及功能。

https://ithelp.ithome.com.tw/upload/images/20211008/20092056ahBmRnI9ky.png
        Modifier 的順序會影響樣式

Custom Views - 自訂義視圖

通過編寫類型為 View 的 struct 來實現自定義視圖。

 struct CustomView: View {
     let var customVars: Type
     var body: some View {
       //視圖內容
     }
  } 

struct 中的 var body: some View,定義了自定義視圖中的内容。

some 是 swift 的語法,表示自动推断返回类型。

SwiftUI 官方建議先使用自定義視圖,每一個自定義視圖完成一些基

礎的功能和界面,最终把這些 Custom Views 组合起来成一个功能完

整,構成複雜的 App。

https://ithelp.ithome.com.tw/upload/images/20211009/20092056vYT2181CKy.png
        自定義視圖

Compare with UIKit - 與 UIKit 的對比

基於 UIKit 開發的自定義視圖通常是一個繼承 UIView 的 CLass ;

SwiftUI 則是一個繼承 View 類型的 Struct。假如我要修改視圖的特定公共變量,

像 Opacity 和 BackgroundColor。在 UIKit 中,我們的自定義視圖繼承了 UIView

的所有公共屬性;在 SwiftUI 中,我們通過給 View 添加 Modifier 來實現。這些 

Modifier 靈活遍步在各種 Views 中,而不是像 UIKit 繼承全部 UIView 屬性,

從而達到輕量化,占用更小的存儲空間的效果。

在 SwiftUI 中,View 被定義為一種 Protocol。

https://ithelp.ithome.com.tw/upload/images/20211009/20092056VUZeNIapgc.png
        View 被定義為一種 protocol

 Primitive Views 原始視圖

SwiftUI 提供了一系列原始視圖,這些視圖是視圖的最小單位,類似物件。

例如:Text,Color,Image 等等。開發者可以利用這些原始的視圖來構件

複雜精細的 GUI。在《Building Custom Views in SwiftUI》課程有關於自定義視圖的

詳細介紹。

由於後面的內容都還算簡單,所以這邊就不多浪費時間翻了,推薦去看原始的連結。

兩篇看完就對 Swift UI 的運作過程有大概的理解。


上一篇
【Day 22】 Swift 5.5 Async/await 新特性
下一篇
【Day 24】Swift 資源整理
系列文
下班悠哉學 iOS 開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言