Шестнадцатеричные коды / значения RGB для цветов SwiftUI?

#swift #swiftui #hex #rgb

#swift #swiftui #шестнадцатеричный #rgb

Вопрос:

существует ли скомпилированный список шестнадцатеричных кодов или значений RGB для цветов SwiftUI? Я хотел бы знать либо для Color.purple, но, похоже, не могу найти хороших источников. Есть ли способ программно определить шестнадцатеричный код или значение RGB? Или, может быть, я могу посмотреть на некоторые свойства цвета? Заранее спасибо!

Комментарии:

1. Мы можем создавать и использовать шестнадцатеричные или RGB цвета в наших кодах, какова ваша цель сейчас? вы хотите создать или перевести их вместе?

2. Переведите цвета SwiftUI Color по умолчанию в RGB или hex…

Ответ №1:

Если вы кодируете в SwiftUI 2, вы можете преобразовать свой цвет в UIColor и использовать метод getRed для получения красного, зеленого, синего и альфа-компонентов. Как только у вас есть компоненты, вы можете преобразовать значения в шестнадцатеричную строку:


 extension Color {
    var uiColor: UIColor { .init(self) }
    typealias RGBA = (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
    var rgba: RGBA? {
        var (r, g, b, a): RGBA = (0, 0, 0, 0)
        return uiColor.getRed(amp;r, green: amp;g, blue: amp;b, alpha: amp;a) ? (r, g, b, a) : nil
    }
    var hexaRGB: String? {
        guard let (red, green, blue, _) = rgba else { return nil }
        return String(format: "#xxx",
            Int(red * 255),
            Int(green * 255),
            Int(blue * 255))
    }
    var hexaRGBA: String? {
        guard let (red, green, blue, alpha) = rgba else { return nil }
        return String(format: "#xxxx",
            Int(red * 255),
            Int(green * 255),
            Int(blue * 255),
            Int(alpha * 255))
    }
}
  

 Color.purple.hexaRGB     // "#af52de"
Color.purple.hexaRGBA    // "#af52deff"
if let (red, green, blue, alpha) = Color.purple.rgba {
    red   // 0.686274528503418
    green // 0.321568638086319
    blue  // 0.8705882430076599
    alpha // 1
}
  

Ответ №2:

Разве не хорошо использовать это так?

     import UIKit

extension UIColor {
    
    convenience init(hex:Int, alpha: CGFloat = 1.0) {
        self.init(
            red:   CGFloat((hex amp; 0xFF0000) >> 16) / 255.0,
            green: CGFloat((hex amp; 0x00FF00) >> 8)  / 255.0,
            blue:  CGFloat((hex amp; 0x0000FF) >> 0)  / 255.0,
            alpha: alpha
        )
    }
    
}
  

Комментарии:

1. Вопрос помечен как SwiftUI. Он Color не использует UIColor