swift 16进制颜色转RGB方法

需求:由于颜色值用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")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,138评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,591评论 8 265
  • 同学们大家好,我想和大家分享我最近读的《演讲的力量》这本书前六章的一些读后感。 首先,这本书的作者是TED演讲平台...
    宋悅阅读 1,535评论 1 2
  • 以前动笔写文章、写小说的时候,没有什么顾虑的时候,更没有让人心烦的时候。可是自打过了十九、二十年龄,再动笔写,总觉...
    风月白陶落摇生阅读 243评论 0 1
  • 夕阳落在西山头 我在家西边的场子上玩耍,奔跑 父亲从门里探出头来 吃饭啦吃饭啦孩子 我故意不作声 父亲每走一步 影...
    做梦吧你阅读 242评论 0 0