SwiftUI 颜色的十六进制代码/RGB 值?

nic*_*ing 3 rgb hex swift swiftui

是否有 SwiftUI 颜色的十六进制代码或 RGB 值的编译列表?我想知道 Color.purple 但似乎找不到任何好的来源。有没有办法以编程方式确定十六进制代码或 RGB 值?或者也许我可以看看颜色的一些属性?提前致谢!

Leo*_*bus 6

如果您在 SwiftUI 2 中编码,您可以将 Color 转换为 UIColor 并使用 getRed 方法获取红色、绿色、蓝色和 alpha 分量。获得组件后,您可以将值转换为十六进制字符串:


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(&r, green: &g, blue: &b, alpha: &a) ? (r, g, b, a) : nil
    }
    var hexaRGB: String? {
        guard let (red, green, blue, _) = rgba else { return nil }
        return String(format: "#%02x%02x%02x",
            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: "#%02x%02x%02x%02x",
            Int(red * 255),
            Int(green * 255),
            Int(blue * 255),
            Int(alpha * 255))
    }
}
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)