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

How to convert standard color names in string to UIColor values

我有一个变量:

var colorName = String()

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

cell.btn.tintColor = UIColor.red 

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

如何将字符串 redUIColor 初始化为 UIColor.red

没有内置功能可以创建带有名称的 UIColor。你可以像 Paul Hudson found here: 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")