Swift 3 Использование hex в текстовом цвете

Я немного новичок в Swift и столкнулся с проблемой, которую не могу решить. У меня есть строка со значением, представляющим шестнадцатеричное, например "#004080". Это значение поступает непосредственно из базы данных, и я хочу использовать его для изменения цвета UIlabel, но я не могу этого сделать.

Это мой сводный код:

...
let color1 = "004080"
...


//try do this:
plato1.textColor = UIColor(hex: color1)

//Error:
// Cannot convert value of type 'String' to expected argument type 'Int'

//Try this too:
plato1.textColor = UIColor(hex: Int(Color1)!)

//Error:
//This returns a different color: 4080, not 004080


//EXTENSION FOR A HEXADECIMAL
extension UIColor {

    convenience init(hex: Int) {
        let components = (
            R: CGFloat((hex >> 16) & 0xff) / 255,
            G: CGFloat((hex >> 08) & 0xff) / 255,
            B: CGFloat((hex >> 00) & 0xff) / 255
        )
        self.init(red: components.R, green: components.G, blue: components.B, alpha: 1)
    }
}

Немного запутался шестнадцатеричные числа со стремительными для меня.

Любой совет?

Спасибо вам!

1 ответ

Вы можете разбить вашу строку на двухсимвольные строки, которые представляют RGB по отдельности. Это решило бы вашу проблему с ведущими нулями, не отображаемыми.

Другие вопросы по тегам