最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

SwiftUI Essentials - SwiftUI 基礎(chǔ)

2021-03-29 18:05 作者:js-john  | 我要投稿

摘要

這篇文章介紹了?SwiftUI 的基礎(chǔ)使用方法。我主要通過(guò)觀看 WWDC19 的視頻學(xué)習(xí) SwiftUI,我習(xí)慣在看教程的時(shí)候把重要的事項(xiàng)整理為筆記。如果你和我一樣也是 iOS 的開發(fā)者,你一定會(huì)喜歡上 SwiftUI。和復(fù)雜的 UIViewController 說(shuō)再見(jiàn)吧!

SwiftUI?介紹

SwiftUI 不是為了重新發(fā)明輪子,它包含所有 UIKit 里原有的控件,手勢(shì)控制等,還能更好地適配 iPhone,iPad,Mac,Apple TV?等平臺(tái)。SwiftUI 的出現(xiàn)是為了讓開發(fā)者更加集中精力在自己的定制功能,而不是基本的用戶界面。

Views and Modifiers - 視圖和修飾

View 是用戶界面的基礎(chǔ),每一個(gè) View 定義了 App 里的一部分 UI。通過(guò)編寫聲明式 View 關(guān)系結(jié)構(gòu)來(lái)完成對(duì)用戶界面的定義。

Views and Modifiers - 視圖和修飾


View Container Syntax - 視圖容器語(yǔ)法

View 容器,以 VStack 為例,容器定義了內(nèi)容里的層級(jí)關(guān)系。VStack 的定義是一個(gè) struct,初始化函數(shù)包括了所有可以自定義的參數(shù)。例如 alignment,spacing。在 swiftUI 里通過(guò) VStack(參數(shù)) 來(lái)初始化,例如:VStack(alignment: .leading)。

View Container Syntax - 視圖容器語(yǔ)法


Binding Syntax - 綁定語(yǔ)法

View 的 struct 定義中有變量前面標(biāo)記為 @State 的情況,代表這個(gè)變量可以與傳入的變量進(jìn)行綁定。傳入的變量需要在變量名前添加“$”,有點(diǎn)類似 C 代碼里的傳遞指針。詳細(xì)介紹在《Data Flow Through SwiftUI》課程

Binding Syntax - 綁定語(yǔ)法


Modifier - 修飾

在一個(gè)已有的 View 后面添加 .Modifier(參數(shù))。SwiftUI 里這種語(yǔ)法叫做 Modifier。它的功能是用自定義參數(shù),從一個(gè)已有的 View 中創(chuàng)建新的 View。

Modifier - 修飾

SwiftUI 會(huì)按照 Modifier 的順序把 Modifier 添加到視圖架構(gòu)中,所以 Modifier 添加的順序會(huì)影響 View 最終的樣式。SwiftUI 提倡開發(fā)者用模塊化的 View,每個(gè) View 有自己明確的視圖樣式和功能。

Modifier 的順序會(huì)影響樣式

Custom Views - 自定義視圖

通過(guò)編寫類型為 View 的 struct 來(lái)實(shí)現(xiàn)自定義視圖。

struct 中的 var body: some View,定義了自定義視圖中的內(nèi)容。some 是 swift 的語(yǔ)法,表示自動(dòng)推斷返回類型。SwiftUI 鼓勵(lì)多使用自定義視圖,每一個(gè)自定義視圖完成一些基礎(chǔ)的功能和界面,最終把這些自定義視圖組合起來(lái)完成一個(gè)功能強(qiáng)大,視圖復(fù)雜的 App。

自定義視圖

Compare with UIKit - 與 UIKit 的對(duì)比

基于 UIKit 開發(fā)的自定義視圖通常是定義一個(gè) class,繼承 UIView;SwiftUI 則是定義 View 類型的 struct。假如我們要修改視圖的某些公共變量,例如 opacity 和 backgroundColor。在 UIKit 中,我們的自定義視圖繼承了 UIView 的所有公共屬性;在 SwiftUI 中,我們通過(guò)給 View 添加 Modifier 來(lái)實(shí)現(xiàn)。這些 Modifier 靈活地遍布在各種 View 中,而不是像 UIKit 那樣繼承全部的 UIView 屬性,從而達(dá)到輕量化,占用更小的存儲(chǔ)空間的效果。

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

View 被定義為一種 protocol

Primitive Views 原始視圖

SwiftUI 提供了一系列原始視圖,這些視圖是視圖的最小單位。例如:Text,Color,Image等等。開發(fā)者可以利用這些原始視圖來(lái)構(gòu)建復(fù)雜精細(xì)的用戶界面。在《Building Custom Views in SwiftUI》課程有關(guān)于自定義視圖的詳細(xì)介紹。


Primitive Views 原始視圖


View 的刷新方式

SwiftUI 中的 View 是 struct,所以在生成 View 的時(shí)候是被定義為其輸入的函數(shù),即初始化函數(shù)。當(dāng)輸入發(fā)生變化時(shí),SwiftUI 都會(huì)重新調(diào)用 View 的初始化函數(shù),來(lái)獲取視圖的更新版本。

例如:代碼中的 previousOrders 變量如果在運(yùn)行中改變了,那么 SwiftUI 會(huì)根據(jù)改變的內(nèi)容,自動(dòng)使用改變后的變量來(lái)重新渲染視圖。

View 的刷新方式

Composing Controls 組合控件

Form 容器

像 VStack 那樣,F(xiàn)orm 也是一種視圖容器。Form 容器會(huì)根據(jù)平臺(tái)特性(iOS,macOS)組合容器內(nèi)容的排布方式。


Form 容器


Button 按鈕

按鈕的內(nèi)容可以自由組合,例如:開發(fā)者可以在 Button 里放一個(gè) VStack,制作一個(gè)包含圖片和文字描述的按鈕。

Button 按鈕

Navigation 在 App 中完成頁(yè)面導(dǎo)航

通過(guò)把自定義視圖放進(jìn) NavigationView 容器中實(shí)現(xiàn)導(dǎo)航功能??梢酝ㄟ^(guò)子視圖的 .navigationBarTitle(Text("Title")) 來(lái)設(shè)置 NavigationView 的標(biāo)題。這個(gè) Modifier 是一種“信息由子視圖流向父視圖”的例子,在子視圖設(shè)置 navigationBarTitle 會(huì)反饋到父視圖的 NavigationView 中??墒褂?NavigationButton(destination)來(lái)從一個(gè)頁(yè)面導(dǎo)航到另一個(gè)頁(yè)面。

在 App 中完成頁(yè)面導(dǎo)航


SwiftUI Essentials - SwiftUI 基礎(chǔ)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
蒙自县| 阳高县| 筠连县| 巴彦淖尔市| 永德县| 龙泉市| 曲阳县| 辽中县| 齐河县| 行唐县| 阿巴嘎旗| 石狮市| 鞍山市| 克东县| 游戏| 河西区| 云林县| 东兰县| 镶黄旗| 石景山区| 宿州市| 疏附县| 龙岩市| 游戏| 宜川县| 仙游县| 北碚区| 永定县| 清徐县| 章丘市| 中超| 保亭| 烟台市| 崇礼县| 波密县| 宁夏| 大兴区| 邛崃市| 衡阳市| 博兴县| 南投县|