博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift之颜色、16进制颜色转换成RGB颜色
阅读量:4289 次
发布时间:2019-05-27

本文共 5128 字,大约阅读时间需要 17 分钟。

//16进制字符串转成UIColorimport UIKitclass LYBColorExtention: NSObject {}//方法一:使用://v.backgroundColor="#eeeeee".toUIColor()extension String{    /// 将十六进制颜色转UIColor       ///方法一  - Returns: UIColor    public func toUIColor() -> UIColor {        //处理数值        var cString = self.uppercased().trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)                let length = (cString as NSString).length        //错误处理        if (length < 6 || length > 7 || (!cString.hasPrefix("#") && length == 7)){            return UIColor.white        }                if cString.hasPrefix("#"){            cString = (cString as NSString).substring(from: 1)        }                //字符chuan截取        var range = NSRange()        range.location = 0        range.length = 2                let rString = (cString as NSString).substring(with: range)                range.location = 2        let gString = (cString as NSString).substring(with: range)                range.location = 4        let bString = (cString as NSString).substring(with: range)                //存储转换后的数值        var r:UInt32 = 0,g:UInt32 = 0,b:UInt32 = 0        //进行转换        Scanner(string: rString).scanHexInt32(&r)        Scanner(string: gString).scanHexInt32(&g)        Scanner(string: bString).scanHexInt32(&b)                //根据颜色值创建UIColor        return UIColor(red: CGFloat(r)/255.0, green: CGFloat(g)/255.0, blue: CGFloat(b)/255.0, alpha: 1.0) }     //方法二;"".color    var color: UIColor {        let hex = trimmingCharacters(in: CharacterSet.alphanumerics.inverted)        if #available(iOS 13, *) {            guard let int = Scanner(string: hex).scanInt32(representation: .hexadecimal) else { return #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) }            let a, r, g, b: Int32            switch hex.count {            case 3:     (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)  // RGB (12-bit)            case 6:     (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)                    // RGB (24-bit)            case 8:     (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)       // ARGB (32-bit)            default:    (a, r, g, b) = (255, 0, 0, 0)            }            return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: CGFloat(a) / 255.0)        } else {            var int = UInt32()            Scanner(string: hex).scanHexInt32(&int)            let a, r, g, b: UInt32            switch hex.count {            case 3:     (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)  // RGB (12-bit)            case 6:     (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)                    // RGB (24-bit)            case 8:     (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)       // ARGB (32-bit)            default:    (a, r, g, b) = (255, 0, 0, 0)            }            return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: CGFloat(a) / 255.0)        }      }}//v.backgroundColor=UIColor.init(hexString: "#88eeee")extension UIColor{//    //方法三//    convenience init(hexString:String){//        //处理数值//        var cString = hexString.uppercased().trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)////        let length = (cString as NSString).length//        //错误处理//        if (length < 6 || length > 7 || (!cString.hasPrefix("#") && length == 7)){//            //返回whiteColor//            self.init(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)//            return//        }////        if cString.hasPrefix("#"){//            cString = (cString as NSString).substring(from: 1)//        }////        //字符chuan截取//        var range = NSRange()//        range.location = 0//        range.length = 2////        let rString = (cString as NSString).substring(with: range)////        range.location = 2//        let gString = (cString as NSString).substring(with: range)////        range.location = 4//        let bString = (cString as NSString).substring(with: range)////        //存储转换后的数值//        var r:UInt32 = 0,g:UInt32 = 0,b:UInt32 = 0//        //进行转换//        Scanner(string: rString).scanHexInt32(&r)//        Scanner(string: gString).scanHexInt32(&g)//        Scanner(string: bString).scanHexInt32(&b)//        //根据颜色值创建UIColor//        self.init(red: CGFloat(r)/255.0, green: CGFloat(g)/255.0, blue: CGFloat(b)/255.0, alpha: 1.0)//    }        //方法四    class func hexColor(hex:String) -> UIColor {        var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()        if (cString.hasPrefix("#")) {            cString.remove(at: cString.startIndex)        }        if ((cString.count) != 6) {            return UIColor.gray        }        var rgbValue:UInt64 = 0        Scanner(string: cString).scanHexInt64(&rgbValue)        return UIColor(            red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,            green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,            blue: CGFloat(rgbValue & 0x0000FF) / 255.0,            alpha: CGFloat(1.0)        )    } }

 

转载地址:http://aimgi.baihongyu.com/

你可能感兴趣的文章
学习AOP之透过Spring的Ioc理解Advisor
查看>>
Jquery一个简单的注册验证
查看>>
SpringMVC基础_ControllerAdvice
查看>>
Toast还能显示图片你知道么?
查看>>
安卓三状态切换按钮TriStateToggleButton
查看>>
Spring框架-AOP细节
查看>>
java.lang.Instrument 代理Agent使用
查看>>
Javascript:指针、帽子和女朋友
查看>>
Android中的ALERTDIALOG使用_优就业
查看>>
java使用javacsv读取csv文件 导入Mysql数据库
查看>>
Toolbar 不为人知的助手,ActionMenuView
查看>>
Java回调方法详解
查看>>
如何获取url中的参数并传递给iframe中的报表
查看>>
以前端架构师的思想看问题:解决单页应用,系统角色请求抢占session发送请求问题
查看>>
jsessionid问题解决方案
查看>>
MySQL和Oracle的delete,truncate
查看>>
idea使用心得(2)-安装设置与创建web项目
查看>>
将项目放到服务器tomcat上运行
查看>>
JS几种变量交换方式以及性能分析对比
查看>>
Android面试一天一题(6)——如何进行技术选型
查看>>