當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Swift Never background(alignment:content:)用法及代碼示例


實例方法

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(如 HierarchicalShapeStyleMaterial)作為背景,請改用 View/background(_:ignoresSafeAreaEdges:)。要指定 ShapeInsettableShape ,請分別使用 View/background(_:in:fillStyle:)-89n7jView/background(_:in:fillStyle:)-20tq5

可用版本

iOS 15.0+, iPadOS 15.0+, macOS 12.0+, Mac Catalyst 15.0+, tvOS 15.0+, watchOS 8.0+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Never background(alignment:content:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。