Swift字符串作为UIColor对象

时间:2018-05-24 14:06:40

标签: ios swift uicolor

我正在尝试将字符串'red'转换为UIColor.red,这是我到目前为止所得到的:

let rowColor = row.ResponsibilityColor!

print(rowColor) //this is "red"

styleToApply.backgroundColor = UIColor.yellow

现在如果我知道是否这样做,我肯定会有错误,因为UIColor没有名为rowColor的属性:

styleToApply.backgroundColor = UIColor.rowColor

是否有可能完成我想要做的事情?我不必使用if条件,因为颜色值来自Web服务。

1 个答案:

答案 0 :(得分:1)

你想要那样的东西吗?

extension String {
    func color() -> UIColor? {
        switch(self){
        case "red":
            return UIColor.red
        default:
            return nil
        }
    }
}

使用它:

let rowColor = "red"
let color = rowColor.color()
print(color ?? "color not found in String extensions.")

打印红色 UIColor: r 1,0 g 0,0 b 0,0 a 1,0

不方便的是,您必须在String extension中声明所有API颜色标识符,以将其转换为右侧UIColor,此解决方案可以改进。