如何将字符串中的标准颜色名称转换为UIColor值



我有一个变量:

var colorName = String()

我需要按钮的色调是合适的颜色。执行以下操作:

cell.btn.tintColor = UIColor.red 

适用于我。但我需要使用我的colorName变量,而不是"UIColor.red"表达式。

如何将具有字符串redUIColor初始化为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")

最新更新