我在常量(
String
)内有这个lernset.color
“绿色”。我想将 .foregroundColor()
设置为列表内的符号 (systemName: "folder")
,以便它具有与常量 (lernset.color
) 内写入的颜色相同的颜色。
我遇到的问题:我不知道如何将这个具有 lernset.color
数据类型的常量 (String
) 转换为 Color
数据类型。
我已经尝试过:
.foregroundColor(Color.lernset.color)
.foregroundColor(Color.String(lernset.color))
但没有任何效果。
通常您会输入:
.foregroundColor(Color.green)
但在这种情况下,我希望 List
自动适应,以便 Color
可以改变常数 (lernset.color
) 变化的方式。
如果您想使用字符串,您可以为 Color 添加扩展名:
extension Color {
static subscript(name: String) -> Color {
switch name {
case "green":
return Color.green
case "white":
return Color.white
case "black":
return Color.black
default:
return Color.accentColor
}
}
}
用途:
Color[lernset.color]
使用
Color(lernset.color)
仅当
String
的 lernset.color
值定义为 Color Set
中的
Assets
时才有效
这个
Color.lernset.color
或
Color.green
引用
static
变量。你需要类似的东西
extension Color{
static let yourColor: Color = Color("nameHere")
}
然后就可以打电话
Color.yourColor
“nameHere”是
Color Set
的名字
我本来可以对 Ptit Xav 的帖子发表评论,但我无法发表评论。 所以我用他的解决方案使它工作:
static subscript(name: String) -> Color {
switch name {
case "yellow":
return Color.yellow
case "red":
return Color.red
default:
return Color.white
}
}
然后添加一个跟踪颜色的@State
@State private var color = "red"
并使其发挥作用:
.background(Color[color])