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

let rowColor = row.ResponsibilityColor!

print(rowColor) //this is "red"

styleToApply.backgroundColor = UIColor.yellow

现在,如果我知道是否执行此操作,无疑会出现错误,因为UIColor没有名为rowColor的属性:
styleToApply.backgroundColor = UIColor.rowColor

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

最佳答案

你想要那样的东西吗?

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,此解决方案可以得到改进。

关于ios - Swift字符串作为UIColor对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50511433/

10-13 08:50