How do I convert a UIColor to a hexadecimal string?

后端 未结 3 601
独厮守ぢ
独厮守ぢ 2021-02-04 08:28

I have a project where I need to store the RGBA values of a UIColor in a database as an 8-character hexadecimal string. For example, [UIColor blueColor] would be @\"0000FFFF\".

3条回答
  •  滥情空心
    2021-02-04 08:57

    Swift 4 answer by extension UIColor:

    extension UIColor {
        var hexString: String {
            let colorRef = cgColor.components
            let r = colorRef?[0] ?? 0
            let g = colorRef?[1] ?? 0
            let b = ((colorRef?.count ?? 0) > 2 ? colorRef?[2] : g) ?? 0
            let a = cgColor.alpha
    
            var color = String(
                format: "#%02lX%02lX%02lX",
                lroundf(Float(r * 255)),
                lroundf(Float(g * 255)),
                lroundf(Float(b * 255))
            )
            if a < 1 {
                color += String(format: "%02lX", lroundf(Float(a)))
            }
            return color
        }
    }
    

提交回复
热议问题