iOS swift开发系列--如何扩展uicolor,使得支持从16进制字符串生成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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值