我有一个变量:
var colorName = String()
我需要按钮的色调是合适的颜色。执行以下操作:
cell.btn.tintColor = UIColor.red
适用于我。但我需要使用我的colorName变量,而不是"UIColor.red"表达式。
如何将具有字符串red
的UIColor
初始化为UIColor.red
?
没有内置的功能来创建具有名称的UIColor。你可以写一个类似Paul Hudson在这里找到的扩展:https://www.hackingwithswift.com/example-code/uicolor/how-to-convert-a-html-name-string-into-a-uicolor
简化示例:
extension UIColor {
public func named(_ name: String) -> UIColor? {
let allColors: [String: UIColor] = [
"red": .red,
]
let cleanedName = name.replacingOccurrences(of: " ", with: "").lowercased()
return allColors[cleanedName]
}
}
然后使用它:
let redColor = UIColor().named("red")
您也可以像本文中那样定义xcassets:https://medium.com/bobo-shone/how-to-use-named-color-in-xcode-9-d7149d270a16
然后使用UIColor(named: "red")
由于没有预定义的方法,因此我们需要为此创建一个自定义方法,因此您可以使用下面定义的方法:-
func chooseColor(_ name: String) -> UIColor{
switch name {
case "red":
return UIColor.red //or you can use hex colors here
case "blue":
return UIColor.blue
case "brown":
return UIColor.brown
case "green":
return UIColor.green
case "yellow":
return UIColor.yellow
default :
return UIColor.black
}
}
然后,您可以像下面的语句中那样调用它来访问它:-
cell.btn.tintColor = chooseColor("red")