Swift 十六进制颜色转换

import UIKit


extension UIColor {

    //用数值初始化颜色,便于生成设计图上标明的十六进制颜色

    convenience init(valueRGB: UInt, alpha: CGFloat) {

        self.init(

            red: CGFloat((valueRGB & 0xFF0000) >> 16) / 255.0,

            green: CGFloat((valueRGB & 0x00FF00) >> 8) / 255.0,

            blue: CGFloat(valueRGB & 0x0000FF) / 255.0,

            alpha: alpha

        )

    }

    convenience init(hexColor: String) {

        

        // 用十六进制颜色创建UIColor

        // 存储转换后的数值

        var red:UInt32 = 0, green:UInt32 = 0, blue:UInt32 = 0

        

        // 分别转换进行转换

        Scanner(string: hexColor[0..<2]).scanHexInt32(&red)


        Scanner(string: hexColor[2..<4]).scanHexInt32(&green)

        

        Scanner(string: hexColor[4..<6]).scanHexInt32(&blue)

        

        self.init(red: CGFloat(red)/255.0, green: CGFloat(green)/255.0, blue: CGFloat(blue)/255.0, alpha: 1.0)

    }

}


extension String {

    

    // String使用下标截取字符串

    // 例: "示例字符串"[0..<2] 结果是 "示例"

    subscript (r: Range<Int>) -> String {

        get {

            let startIndex = self.index(self.startIndex, offsetBy: r.lowerBound)

            let endIndex = self.index(self.startIndex, offsetBy: r.upperBound)

            

            return self[startIndex..<endIndex]

        }

    }

}


猜你喜欢

转载自blog.csdn.net/u014305730/article/details/80169869