iOS 色值 转换 干货

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于iOS 色值 转换 干货的主要内容,如果未能解决你的问题,请参考以下文章

iOS-关于View透明属性干货

ios开发常用RGB色值

求HEX色值转CMYK/HSL/HSB值的VBA代码

iOS常用RGB颜色的色值表

JS色值#f97db3转换为16进制int

IOS开发-OC学习-常用功能代码片段整理