background(alignment:content:)
聲明
func background<V>(
alignment: Alignment = .center,
content: () -> V
) -> some View where V : View
返回值
使用指定內容作為背景的視圖。
參數
alignment
修改器用於定位對背景視圖進行分組的隱式
ZStack
的對齊方式。默認值為Alignment/center
。content
ViewBuilder
用於聲明要在此視圖後麵繪製的視圖,從下到上以級聯順序堆疊。您列出的最後一個視圖顯示在堆棧的前麵。
詳述
使用此修飾符將一個或多個視圖放置在另一個視圖後麵。例如,您可以在 Text
視圖中放置一組星星:
Text("ABCDEF")
.background(alignment: .leading) { Star(color: .red) }
.background(alignment: .center) { Star(color: .green) }
.background(alignment: .trailing) { Star(color: .blue) }
上麵的例子假設你已經定義了一個帶有參數化顏色的 Star
視圖:
struct Star: View {
var color: Color
var body: some View {
Image(systemName: "star.fill")
.foregroundStyle(color)
}
}
通過為每個修飾符設置不同的alignment
值,可以使星星出現在文本後麵的不同位置:
如果您在 content
閉包中指定多個視圖,則修飾符會將閉包中的所有視圖收集到一個隱式 ZStack
中,按從後到前的順序排列它們。例如,您可以在一個圓圈後麵放置一個垂直條,將兩個垂直條放在一個水平條後麵:
Color.blue
.frame(width: 200, height: 10) // Creates a horizontal bar.
.background {
Color.green
.frame(width: 10, height: 100) // Creates a vertical bar.
Circle()
.frame(width: 50, height: 50)
}
背景修飾符和由背景內容(圓形和豎線)組成的隱式ZStack
都使用默認的Alignment/center
對齊方式。垂直條出現在圓圈後麵的中心,兩者都顯示為以水平條為中心的複合視圖:
如果您為背景指定對齊方式,它將應用於隱式堆棧而不是閉包中的各個視圖。如果添加 Alignment/leading
對齊,您可以看到這一點:
Color.blue
.frame(width: 200, height: 10)
.background(alignment: .leading) {
Color.green
.frame(width: 10, height: 100)
Circle()
.frame(width: 50, height: 50)
}
垂直條和圓形作為一個單元移動以將堆棧與水平條的前緣對齊,而垂直條保持在圓形的中心:
要控製 content
閉包中各個項目的位置,請為每個項目使用不同的背景修飾符,如前麵文本下的星號示例所示,或者在內容閉包內添加一個顯式的 ZStack
並具有自己的對齊方式:
Color.blue
.frame(width: 200, height: 10)
.background(alignment: .leading) {
ZStack(alignment: .leading) {
Color.green
.frame(width: 10, height: 100)
Circle()
.frame(width: 50, height: 50)
}
}
堆棧對齊確保圓的前緣與垂直條對齊,而背景修飾符將複合視圖與水平條對齊:
您可以通過將修改後的視圖和背景內容放入 ZStack
來實現沒有背景修飾符的分層。這會產生更簡單的視圖層次結構,但會更改 SwiftUI 應用於視圖的布局優先級。當您希望修改後的視圖支配布局時,請使用背景修飾符。
如果要指定 ShapeStyle
(如 HierarchicalShapeStyle
或 Material
)作為背景,請改用 View/background(_:ignoresSafeAreaEdges:)
。要指定 Shape
或 InsettableShape
,請分別使用 View/background(_:in:fillStyle:)-89n7j
或 View/background(_:in:fillStyle:)-20tq5
。
可用版本
相關用法
- Swift Never background(_:ignoresSafeAreaEdges:)用法及代碼示例
- Swift Never background(in:fillStyle:)用法及代碼示例
- Swift Never background(_:in:fillStyle:)用法及代碼示例
- Swift Never background(ignoresSafeAreaEdges:)用法及代碼示例
- Swift Never badge(_:)用法及代碼示例
- Swift Never buttonStyle(_:)用法及代碼示例
- Swift Never brightness(_:)用法及代碼示例
- Swift Never blur(radius:opaque:)用法及代碼示例
- Swift Never blendMode(_:)用法及代碼示例
- Swift Never border(_:width:)用法及代碼示例
- Swift Never body用法及代碼示例
- Swift Never pageCommand(value:in:step:)用法及代碼示例
- Swift Never opacity(_:)用法及代碼示例
- Swift Never colorMultiply(_:)用法及代碼示例
- Swift Never accessibilityAction(action:label:)用法及代碼示例
- Swift Never alert(isPresented:error:actions:message:)用法及代碼示例
- Swift Never confirmationDialog(_:isPresented:titleVisibility:actions:)用法及代碼示例
- Swift Never flipsForRightToLeftLayoutDirection(_:)用法及代碼示例
- Swift Never position(x:y:)用法及代碼示例
- Swift Never position(_:)用法及代碼示例
- Swift Never luminanceToAlpha()用法及代碼示例
- Swift Never accessibilityAction(_:_:)用法及代碼示例
- Swift Never previewDisplayName(_:)用法及代碼示例
- Swift Never progressViewStyle(_:)用法及代碼示例
- Swift Never popover(isPresented:attachmentAnchor:arrowEdge:content:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Never background(alignment:content:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。