当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Optional 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大神的英文原创作品 Optional foregroundStyle(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。