新聞中心
概覽
在 SwiftUI 中,你可以將視圖組合成一個(gè)層次結(jié)構(gòu),用它來描述你的 App 用戶界面。視圖修飾符能幫助你自定 App 視圖的外觀和行為。例如,你可以使用修飾符來執(zhí)行以下操作:

10年的常州網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整常州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“常州網(wǎng)站設(shè)計(jì)”,“常州網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
-
為視圖添加輔助功能。
-
調(diào)整視圖的樣式、布局和其他外觀特征。
-
響應(yīng)拷貝和粘貼等操作。
-
有條件地呈現(xiàn)模式視圖,例如彈出窗口。
-
配置支持視圖,例如工具欄。
由于視圖修飾符是帶有 View (英文) 協(xié)議提供的行為的 Swift 方法,因此,你可以將它們應(yīng)用于遵從 View (英文) 協(xié)議的任何類型。這包括 Text (英文)、Image (英文) 和 Button (英文) 等原生視圖以及你定義的視圖。
通過修飾符配置視圖
與其他 Swift 方法一樣,修飾符在實(shí)例上運(yùn)行 (在本例中為某種視圖) 并且可以選擇性地采用輸入?yún)?shù)。例如,你可以應(yīng)用 foregroundColor(_:) (英文) 修飾符來設(shè)置 Text (英文) 視圖的顏色:
Text("Hello, World!") .foregroundColor(.red) // Display red text.
修飾符將返回一個(gè)包裝了原始視圖的視圖,并在視圖層次結(jié)構(gòu)中替換它。你可以將上例中的兩行代碼想成是解析為顯示紅色文本的單一視圖。
盡管上述代碼遵循 Swift 的規(guī)則,但剛剛接觸 SwiftUI 的開發(fā)者可能不熟悉此代碼的結(jié)構(gòu)。SwiftUI 使用聲明式方法,也就是說,你在代碼中聲明并配置視圖的位置與視圖在視圖層次結(jié)構(gòu)中的位置對(duì)應(yīng)。有關(guān)更多信息,請(qǐng)參閱“聲明自定視圖”。
鏈?zhǔn)秸{(diào)用修飾符以實(shí)現(xiàn)復(fù)雜效果
你通常通過一個(gè)接一個(gè)地調(diào)用修飾符來以鏈?zhǔn)椒绞秸{(diào)用它們,即每個(gè)修飾符都包裝了上一個(gè)修飾符的結(jié)果。例如,你可以使用 frame(width:height:alignment:) (英文) 修飾符將文本視圖包裝在具有給定寬度的隱形框中,以影響其布局,然后使用 border(_:width:) (英文) 修飾符圍繞該框架繪制一個(gè)輪廓:
Text("Title") .frame(width: 100) .border(Color.gray)
你應(yīng)用修飾符的順序很重要。例如,通過以上代碼得出的 border 會(huì)繪制框架完整寬度的輪廓。
如果在 border 修飾符之后指定 frame 修飾符,則 SwiftUI 僅會(huì)將 border 應(yīng)用于文本視圖,占用的空間絕不會(huì)超過渲染其內(nèi)容所需的空間。
Text("Title") .border(Color.gray) // Apply the border first this time. .frame(width: 100)
將該視圖包裝在一個(gè)具有固定 100 點(diǎn)寬度的隱形框中會(huì)影響復(fù)合視圖的布局,但對(duì) border 沒有影響。
配置子視圖
你可以將 View (英文) 協(xié)議定義的任何視圖修飾符應(yīng)用于任何具體的視圖,即使是在修飾符對(duì)其目標(biāo)視圖沒有直接影響的情況下也是如此。修飾符的影響會(huì)傳播到并未顯式覆蓋修飾符的子視圖。
例如,VStack (英文) 實(shí)例本身的作用僅僅是垂直堆疊其他視圖,它沒有任何要顯示的文本。因此,將一個(gè) font(_:) (英文) 修飾符應(yīng)用于該 stack 不會(huì)對(duì)它產(chǎn)生任何影響。然而,font 修飾符卻會(huì)應(yīng)用于該 stack 的所有子視圖,其中的部分視圖可能會(huì)顯示文本。不過,你可以通過向特定子視圖添加另一個(gè)修飾符來在本地覆蓋該堆疊的修飾符:
VStack { Text("Title") .font(.title) // Override the font of this view. Text("First body line.") Text("Second body line.") } .font(.body) // Set a default font for text in the stack.
使用特定于視圖的修飾符
盡管許多視圖類型依賴于標(biāo)準(zhǔn)視圖修飾符來進(jìn)行自定和控制,但某些視圖可以定義特定于該視圖類型的修飾符。此類修飾符僅適用于相應(yīng)類型的視圖。例如,你可以使用 Text (英文) 定義的 bold() (英文) 修飾符,來方便地向視圖的文本添加粗體效果。盡管你可以在任何視圖上使用 font(_:) (英文),因?yàn)樗?View (英文) 協(xié)議的一部分,但你僅能在 Text (英文) 視圖上使用 bold() (英文)。因此,你并不能在容器視圖上使用 bold 修飾符:
VStack { Text("Hello, world!") } .bold() // Fails because 'VStack' doesn't have a 'bold' modifier.
此外,在應(yīng)用另一個(gè)通用修飾符后,你也不能在 Text (英文) 視圖上使用它,因?yàn)橥ㄓ眯揎椃麜?huì)返回一個(gè) opaque type (英文)。例如,padding 修飾符的返回值不是 Text (英文),而是一個(gè)無法采用 bold 修飾符的不透明的結(jié)果類型:
Text("Hello, world!") .padding() .bold() // Fails because 'some View' doesn't have a 'bold' modifier.
正確的做法是將 bold 修飾符直接應(yīng)用于 Text (英文) 視圖,然后添加 padding:
Text("Hello, world!") .bold() // Succeeds. .padding()
文章名稱:創(chuàng)新互聯(lián)IOS教程:配置視圖
網(wǎng)站地址:http://www.dlmjj.cn/article/dpjhgdp.html


咨詢
建站咨詢
