如何让我的 SwiftUI 视图为小部件重音?

问题描述 投票:0回答:1

这就是我定义简单视图的方式:

VStack(alignment: .leading, spacing: 0) {
    Text("my simple text in first line")
        .frame(maxWidth: .infinity, alignment: .leading)
        .multilineTextAlignment(.leading)
        .foregroundColor(.white)
        .font(.caption)
        .padding(10)
        .background(Color.gray)
        .widgetAccentable()
    Text("my simple text in second line")
            .frame(maxWidth: .infinity, alignment: .leading)
            .multilineTextAlignment(.leading)
            .foregroundColor(.white)
            .font(.caption)
            .opacity(0.7)
            .lineLimit(5)
            .padding(10)
            .background(Color.gray)
            .widgetAccentable()
    Spacer()
}
.frame(maxWidth: .infinity, alignment: .leading)

结果如下:

enter image description here

enter image description here

如何制作黑色背景和绿色(有色)文本?是否可以?和下面的图标一样。

ios swiftui
1个回答
0
投票

widgetAccentable
的工作方式是将应用它的视图视为mask,并将重音应用于视图的所有非透明区域。通过在两个
.background(.gray)
上都有
Text
,您实际上会删除所有透明区域,因此整个小部件都会着色,并且您看不到文本。

所以只需删除

.background(.gray)
。如果你想让小部件有不同的背景,你可以使用
.containerBackground(..., for: .widget)
,或者把
.background(...)
after
widgetAccentable

请注意,在有色小部件中,许多颜色都会被忽略。对于灰色,

.gray
显示为白色。您应该使用类似
.fill.tertiary
的内容来代替。

© www.soinside.com 2019 - 2024. All rights reserved.