美文网首页
swift 16进制颜色转RGB方法

swift 16进制颜色转RGB方法

作者: 命运建筑师fly | 来源:发表于2018-09-21 15:53 被阅读0次

需求:由于颜色值用16进制用的比较多,系统不支持16进制颜色值,需要自己来适配一下
以前使用oc 可以这样使用宏来

#define UIColorFromRGB(rgbValue) \
[UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

颜色常见的表示方法 #5B5B5B 和0x5B5B5B两种格式

实现一 0x5B5B5B

/// 样式  0x5B5B5B
///
/// - Parameters:
///   - color_vaule: 传入0x5B5B5B格式的色值
///   - alpha: 传入透明度
/// - Returns: 颜色
func UIColorFromRGB(color_vaule : UInt64 , alpha : CGFloat = 1) -> UIColor {
    let redValue = CGFloat((color_vaule & 0xFF0000) >> 16)/255.0
    let greenValue = CGFloat((color_vaule & 0xFF00) >> 8)/255.0
    let blueValue = CGFloat(color_vaule & 0xFF)/255.0
    return UIColor(red: redValue, green: greenValue, blue: blueValue, alpha: alpha)
}

实现二 #5B5B5B

/// 样式 #5B5B5B
///
/// - Parameters:
///   - color_vaule: 传入#5B5B5B格式的字符串
///   - alpha: 传入透明度
/// - Returns: 颜色
func UIColorFromRGB(color_vaule : String , alpha : CGFloat = 1) -> UIColor {
    
    if color_vaule.isEmpty {
        return UIColor.clear
    }
    
    var cString = color_vaule.trimmingCharacters(in: NSCharacterSet.whitespacesAndNewlines)
    
    if cString.count == 0 {
        return UIColor.clear
    }
    
    if cString.hasPrefix("#") {
        cString.remove(at: cString.startIndex)
    }
    
    if cString.count < 6 && cString.count != 6 {
        
        return UIColor.clear
    }
    
    let value = "0x\(cString)"
    
    let scanner = Scanner(string:value)
    
    var hexValue : UInt64 = 0
    //查找16进制是否存在
    if scanner.scanHexInt64(&hexValue) {
        print(hexValue)
        let redValue = CGFloat((hexValue & 0xFF0000) >> 16)/255.0
          let greenValue = CGFloat((hexValue & 0xFF00) >> 8)/255.0
          let blueValue = CGFloat(hexValue & 0xFF)/255.0
          return UIColor(red: redValue, green: greenValue, blue: blueValue, alpha: alpha)
    }else{
        return UIColor.clear
    }
}

使用方法

方法一使用:
tempTableView.backgroundColor = UIColorFromRGB(color_vaule: 0x7FFFAA)
方法二使用:
tempTableView.backgroundColor = UIColorFromRGB(color_vaule: "#7FFFAA")

相关文章

网友评论

      本文标题:swift 16进制颜色转RGB方法

      本文链接:https://www.haomeiwen.com/subject/wnzanftx.html