如何将字符串转换为 UIColor (Swift)
How to Convert a string into a UIColor (Swift)
我在我的 SKScene 中定义了几种颜色:
let color1 = UIColor(red: 1, green: 153/255, blue: 0, alpha: 1)
let color2 = UIColor(red: 74/255, green: 134/255, blue: 232/255, alpha: 1)
let color3 = UIColor(red: 0, green: 0, blue: 1, alpha: 1)
let color4 = UIColor(red: 0, green: 1, blue: 0, alpha: 1)
let color5 = UIColor(red: 153/255, green: 0, blue: 1, alpha: 1)
let color6 = UIColor(red: 1, green: 0, blue: 0 , alpha: 1)
这些颜色对应于我游戏中具有不同值的图块。一个瓷砖与 color1 等......
当瓷砖加在一起时,我将它们的值相加,并想根据它们的值赋予它们新的颜色。
所以我想让方块的值对方块的颜色产生影响。
我试过:
tile.color = UIColor(named: "color\(value)") ?? color1
但是当我这样做时,它总是使用默认值(color1)。
如何让方块的值影响方块的颜色?
命名的 UIColor
是从 xcassets 目录中设置的颜色初始化的。
您可以根据您的值设置颜色
switch value {
case 2: tile.color = color2
...
default: tile.color = color1
}
或者您可以在 xcassets 目录中创建颜色集。
UIColor named:
仅在您定义颜色集资产时有效。由于您的颜色是在代码中定义的,因此 UIColor named:
永远不会 return 除了 nil
.
一个解决方案是将颜色放入字典而不是单独的变量。
let colors: [String: UIColor] = [
"color1" : UIColor(red: 1, green: 153/255, blue: 0, alpha: 1),
"color2" : UIColor(red: 74/255, green: 134/255, blue: 232/255, alpha: 1),
"color3" : UIColor(red: 0, green: 0, blue: 1, alpha: 1),
"color4" : UIColor(red: 0, green: 1, blue: 0, alpha: 1),
"color5" : UIColor(red: 153/255, green: 0, blue: 1, alpha: 1),
"color6" : UIColor(red: 1, green: 0, blue: 0 , alpha: 1),
]
然后你可以得到你的颜色:
tile.color = colors["color\(value)"] ?? colors["color1"]!
我在我的 SKScene 中定义了几种颜色:
let color1 = UIColor(red: 1, green: 153/255, blue: 0, alpha: 1)
let color2 = UIColor(red: 74/255, green: 134/255, blue: 232/255, alpha: 1)
let color3 = UIColor(red: 0, green: 0, blue: 1, alpha: 1)
let color4 = UIColor(red: 0, green: 1, blue: 0, alpha: 1)
let color5 = UIColor(red: 153/255, green: 0, blue: 1, alpha: 1)
let color6 = UIColor(red: 1, green: 0, blue: 0 , alpha: 1)
这些颜色对应于我游戏中具有不同值的图块。一个瓷砖与 color1 等......
当瓷砖加在一起时,我将它们的值相加,并想根据它们的值赋予它们新的颜色。
所以我想让方块的值对方块的颜色产生影响。
我试过:
tile.color = UIColor(named: "color\(value)") ?? color1
但是当我这样做时,它总是使用默认值(color1)。
如何让方块的值影响方块的颜色?
命名的 UIColor
是从 xcassets 目录中设置的颜色初始化的。
您可以根据您的值设置颜色
switch value {
case 2: tile.color = color2
...
default: tile.color = color1
}
或者您可以在 xcassets 目录中创建颜色集。
UIColor named:
仅在您定义颜色集资产时有效。由于您的颜色是在代码中定义的,因此 UIColor named:
永远不会 return 除了 nil
.
一个解决方案是将颜色放入字典而不是单独的变量。
let colors: [String: UIColor] = [
"color1" : UIColor(red: 1, green: 153/255, blue: 0, alpha: 1),
"color2" : UIColor(red: 74/255, green: 134/255, blue: 232/255, alpha: 1),
"color3" : UIColor(red: 0, green: 0, blue: 1, alpha: 1),
"color4" : UIColor(red: 0, green: 1, blue: 0, alpha: 1),
"color5" : UIColor(red: 153/255, green: 0, blue: 1, alpha: 1),
"color6" : UIColor(red: 1, green: 0, blue: 0 , alpha: 1),
]
然后你可以得到你的颜色:
tile.color = colors["color\(value)"] ?? colors["color1"]!