• iOS 色值 转换 干货


    1、 整数RGB设置颜色

    convenience init(red: Int, green: Int, blue: Int , alp: CGFloat = 1.0 ) {  
        assert(red >= 0 && red <= 255, "Invalid red component")       
        assert(green >= 0 && green <= 255, "Invalid green component")       
        assert(blue >= 0 && blue <= 255, "Invalid blue component")               
        self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: alp)    
    }

    2、16进制设置颜色

    convenience init(hexInt: Int) {        
        self.init(red:(hexInt >> 16) & 0xff, green:(hexInt >> 8) & 0xff, blue:hexInt & 0xff)    
    }       

    3、字符串设置颜色

    convenience init(hexString: String) { 
        var hexStr = hexString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet() as NSCharacterSet).uppercaseString               
        if (hexStr.hasPrefix("#")) {            
            hexStr = hexStr.substringFromIndex(hexStr.startIndex.advancedBy(1))        
        }           
        var hexInt: UInt32 = 0        
        NSScanner(string: hexStr).scanHexInt(&hexInt)               
        self.init(red: Int((hexInt >> 16) & 0xff), green: Int((hexInt >> 8) & 0xff), blue: Int(hexInt & 0xff))    }
    }

    整个封装:

    extension UIColor {       
        // RGB整数设置颜色
        convenience init(red: Int, green: Int, blue: Int , alp: CGFloat = 1.0 ) {  
            assert(red >= 0 && red <= 255, "Invalid red component")       
            assert(green >= 0 && green <= 255, "Invalid green component")       
            assert(blue >= 0 && blue <= 255, "Invalid blue component")               
            self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: alp)    
            
        }
        // 16进制设置颜色
        convenience init(hexInt: Int) {        
           self.init(red:(hexInt >> 16) & 0xff, green:(hexInt >> 8) & 0xff, blue:hexInt & 0xff)    
        }       
           
           // 字符串设置颜色
        convenience init(hexString: String) { 
            var hexStr = hexString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet() as NSCharacterSet).uppercaseString               
            if (hexStr.hasPrefix("#")) {            
                hexStr = hexStr.substringFromIndex(hexStr.startIndex.advancedBy(1))        
            }           
            var hexInt: UInt32 = 0        
            NSScanner(string: hexStr).scanHexInt(&hexInt)               
            self.init(red: Int((hexInt >> 16) & 0xff), green: Int((hexInt >> 8) & 0xff), blue: Int(hexInt & 0xff))    
        }
    }

    应用:

    UIColor(red: 253, green: 77, blue: 79)
    UIColor(red: 253, green: 77, blue: 79, alp: 0.9)
    
    UIColor(hexString: "#A94442")
    UIColor(hexString: "#DCA7A7")
    
    UIColor(hexInt: 0xdcdcdc)
    UIColor(hexInt: 0xdcdaaa)
  • 相关阅读:
    There is an overlap in the region chain修复
    There is an overlap in the region chain
    region xx not deployed on any region server
    python 中的re模块,正则表达式
    TCP粘包问题解析与解决
    yield from
    Git push提交时报错Permission denied(publickey)...Please make sure you have the correct access rights and the repository exists.
    mysql 中Varchar 与char的区别
    Mysql 字符集及排序规则
    请实现一个装饰器,限制该函数被调用的频率,如10秒一次
  • 原文地址:https://www.cnblogs.com/jfckliving/p/5836717.html
Copyright © 2020-2023  润新知