IOS SWIFT开发系列–如何扩展UIColor,使得支持从16进制字符串生成UIColor

很多时候我们需要保存颜色的16进制格式的值到icloud中,读取颜色的时候,就需要从十六进制字符串转为UICOLOR,以下是对UIColor的扩展,扩展后可支持转换

extension UIColor { //扩展UIColor 类

// 新增的方法:从十六进制字符串创建颜色

convenience init?(hexString: String) {

    var r: CGFloat = 0

    var g: CGFloat = 0

    var b: CGFloat = 0

    var a: CGFloat = 1.0



    if hexString.hasPrefix("#") {

        let start = hexString.index(hexString.startIndex, offsetBy: 1)

        let hexColor = String(hexString[start...])

        if hexColor.count == 6 || hexColor.count == 8 {

            let scanner = Scanner(string: hexColor)

            var hexNumber: UInt64 = 0

            if scanner.scanHexInt64(&hexNumber) {

                // 正确的位移和掩码应用

                r = CGFloat((hexNumber & 0xff0000) >> 16) / 255

                g = CGFloat((hexNumber & 0x00ff00) >> 8) / 255

                b = CGFloat(hexNumber & 0x0000ff) / 255

                if hexColor.count == 8 {

                    a = CGFloat((hexNumber & 0xff000000) >> 24) / 255

                }



                self.init(red: r, green: g, blue: b, alpha: a)

                return

            }

        }

    }

    return nil

}

}

使用方法

let aHexColorString = “#FF0000” //红色的16进制字符串

let noteColor = UIColor(hexString: aHexColorString) // 该条语句创建一个红色的 uicolor变量noteColor

IOS SWIFT开发系列–如何扩展UIColor,使得支持从16进制字符串生成UIColor

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top