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


Swift Never foregroundStyle(_:)用法及代碼示例


實例方法

foregroundStyle(_:)

設置視圖的前景元素以使用給定的樣式。

聲明

func foregroundStyle<S>(_ style: S) -> some View where S : ShapeStyle

返回值

使用給定前景樣式的視圖。

參數

style

填充前景元素時使用的顏色或圖案。要指示特定值,請使用 ColorShapeStyle/image(_:sourceRect:scale:) 或其中一種漸變類型,例如 ShapeStyle/linearGradient(colors:startPoint:endPoint:) 。要設置與包含視圖的樣式相關的樣式,請使用其中一種語義樣式,例如 ShapeStyle/primary

詳述

使用此方法為前景內容設置樣式,例如文本、形狀和模板圖像(包括符號):


HStack {
    Image(systemName: "triangle.fill")
    Text("Hello, world!")
    RoundedRectangle(cornerRadius: 5)
        .frame(width: 40, height: 20)
}
.foregroundStyle(.teal)

上麵的示例創建了一行 ShapeStyle/teal 前景元素:

您可以使用任何符合ShapeStyle 協議的樣式,如上例中的ShapeStyle/teal 顏色,或下圖所示的ShapeStyle/linearGradient(colors:startPoint:endPoint:) 漸變:


Text("Gradient Text")
    .font(.largeTitle)
    .foregroundStyle(
        .linearGradient(
            colors: [.yellow, .blue],
            startPoint: .top,
            endPoint: .bottom
        )
    )

SwiftUI 為給定樣式創建 context-dependent 渲染。例如,您從資產目錄加載的 Color 可以具有不同的明暗外觀,而某些樣式也會因平台而異。

ShapeStyle/secondary 這樣的分層前景樣式不會強加自己的樣式,而是修改其他樣式。特別是,它們將當前前景樣式的主要級別修改為層次樣式名稱給出的程度。要查找要修改的當前前景樣式,SwiftUI 會查找您使用 foregroundStyle(_:)View/foregroundColor(_:) 修飾符應用的最裏麵的包含樣式。如果您沒有指定樣式,SwiftUI 將使用默認的前景樣式,如下例所示:


VStack(alignment: .leading) {
    Label("Primary", systemImage: "1.square.fill")
    Label("Secondary", systemImage: "2.square.fill")
        .foregroundStyle(.secondary)
}

如果在封閉的 VStack 上添加前景樣式,則分層樣式會相應響應:


VStack(alignment: .leading) {
    Label("Primary", systemImage: "1.square.fill")
    Label("Secondary", systemImage: "2.square.fill")
        .foregroundStyle(.secondary)
}
.foregroundStyle(.blue)

當您將自定義樣式應用於視圖時,視圖會禁用該視圖或其任何子視圖中前景元素的活力效果,否則它會通過添加背景材料獲得 - 例如,使用 View/background(_:ignoresSafeAreaEdges:)修飾符。但是,應用於默認前景的分層樣式不會禁用活力。

可用版本

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

相關用法


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