swift-UIColor轉(zhuǎn)16進制顏色

extension UIColor { 

    class func RGBColor(r :CGFloat, g :CGFloat, b :CGFloat, a :CGFloat) -> UIColor {
        return UIColor(red: r/255.0, green: g/255.0, blue: b/255.0, alpha: a)
    }
    
    class func HexColor(hex: UInt) -> (UIColor) {
        let r = (CGFloat)((hex >> 16) & 0xFF)
        let g = (CGFloat)((hex >> 8) & 0xFF)
        let b = (CGFloat)((hex) & 0xFF)
        return RGBColor(r: r, g: g, b: b, a: 1)
    }
    
    class func HexColor(hexStr: String) -> UIColor{
        var red:UInt32 = 0, green:UInt32 = 0, blue:UInt32 = 0
        var prefixCount = 0
        
        if hexStr.hasPrefix("0x") || hexStr.hasPrefix("0X") {
            prefixCount = 2
        }
        if hexStr.hasPrefix("#") {
            prefixCount = 1
        }
        // subString擴展方法請看下文
        let subStrR = hexStr.subString(from: (0+prefixCount), length: 2) 
        let subStrG = hexStr.subString(from: (2+prefixCount), length: 2)
        let subStrB = hexStr.subString(from: (4+prefixCount), length: 2)
        
        Scanner(string: subStrR).scanHexInt32(&red)
        Scanner(string: subStrG).scanHexInt32(&green)
        Scanner(string: subStrB).scanHexInt32(&blue)
        
        return UIColor.RGBColor(r: CGFloat(red), g: CGFloat(green), b: CGFloat(blue), a: 1.0)
        
    }
}

一個截取字符串的擴展

extension String {
//MARK: - 字符串截取(從0開始計數(shù))
    func subString(from: Int, length: Int) -> String {
        if (from >= 0) && (length>0) && (self.characters.count>=(from+length)){
            let start = self.index(self.startIndex, offsetBy: from)
            let len = self.index(start, offsetBy: length-1)
            let subStr = self[start...len]
            return subStr
        }
        XGLog(message: "字符串截取越界!")
        return ""
    }
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容