• Swift 解析16进制颜色

    2018-03-19 15:09:07
    Swift 版 解析16进制颜色 extension UIColor { public convenience init(hex: String) { var red: CGFloat = 0.0 var green: CGFloat = 0.0 var blue: CGFloat = 0.0 var alp...

    Swift 版 解析16进制颜色

    
    extension UIColor {
    
        public convenience init(hex: String) {
    
            var red:   CGFloat = 0.0
            var green: CGFloat = 0.0
            var blue:  CGFloat = 0.0
            var alpha: CGFloat = 1.0
            var hex:   String = hex
    
            if hex.hasPrefix("#") {
                let index = hex.index(hex.startIndex, offsetBy: 1)
                hex = String(hex[index...])
            }
    
            let scanner = Scanner(string: hex)
            var hexValue: CUnsignedLongLong = 0
            if scanner.scanHexInt64(&hexValue) {
                switch (hex.count) {
                case 3:
                    red   = CGFloat((hexValue & 0xF00) >> 8)       / 15.0
                    green = CGFloat((hexValue & 0x0F0) >> 4)       / 15.0
                    blue  = CGFloat(hexValue & 0x00F)              / 15.0
                case 4:
                    red   = CGFloat((hexValue & 0xF000) >> 12)     / 15.0
                    green = CGFloat((hexValue & 0x0F00) >> 8)      / 15.0
                    blue  = CGFloat((hexValue & 0x00F0) >> 4)      / 15.0
                    alpha = CGFloat(hexValue & 0x000F)             / 15.0
                case 6:
                    red   = CGFloat((hexValue & 0xFF0000) >> 16)   / 255.0
                    green = CGFloat((hexValue & 0x00FF00) >> 8)    / 255.0
                    blue  = CGFloat(hexValue & 0x0000FF)           / 255.0
                case 8:
                    red   = CGFloat((hexValue & 0xFF000000) >> 24) / 255.0
                    green = CGFloat((hexValue & 0x00FF0000) >> 16) / 255.0
                    blue  = CGFloat((hexValue & 0x0000FF00) >> 8)  / 255.0
                    alpha = CGFloat(hexValue & 0x000000FF)         / 255.0
                default:
                    print("Invalid RGB string, number of characters after '#' should be either 3, 4, 6 or 8", terminator: "")
                }
            } else {
                print("Scan hex error")
            }
            self.init(red:red, green:green, blue:blue, alpha:alpha)
        }
    
    }
    

    使用方式

    
    let _ = UIColor(hex: "#eeeeee")
    
    展开全文
  • swift 16进制颜色转换

    2017-08-08 11:57:01
    调用 extension UIColor { //用数值初始化颜色,便于生成设计图上标明的十六进制颜色 convenience init(valueRGB: UInt, alpha: CGFloat) { self.init( red: CGFloat((valueRGB & 0xFF0000) >> 16) / 2

    这里写图片描述

    这里写图片描述

    调用
    这里写图片描述

    extension UIColor {
        //用数值初始化颜色,便于生成设计图上标明的十六进制颜色
        convenience init(valueRGB: UInt, alpha: CGFloat) {
            self.init(
                red: CGFloat((valueRGB & 0xFF0000) >> 16) / 255.0,
                green: CGFloat((valueRGB & 0x00FF00) >> 8) / 255.0,
                blue: CGFloat(valueRGB & 0x0000FF) / 255.0,
                alpha: alpha
            )
        }
    }
    
    展开全文
  • Swift UIColor 16进制编码转换RGB : 由于UI出图的时候,通常给的是16进制的编码颜色,我们在开发的时候需要将它转换为RGB格式,现在给出两种代码片段.   一、对UIColor进行扩展 1 extension UIColor { 2 3 /...
     
    

    Swift UIColor 16进制编码转换RGB :

    由于UI出图的时候,通常给的是16进制的编码颜色,我们在开发的时候需要将它转换为RGB格式,现在给出两种代码片段.

     

    一、对UIColor进行扩展

    复制代码
     1 extension UIColor {
     2 
     3     /**
     4      Make color with hex string
     5      - parameter hex: 16进制字符串
     6      - returns: RGB
     7      */
     8     static func colorWithHexString (hex: String) -> UIColor {
     9 
    10         var cString: String = hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).uppercaseString
    11 
    12         if (cString.hasPrefix("#")) {
    13             cString = (cString as NSString).substringFromIndex(1)
    14         }
    15 
    16         if (cString.characters.count != 6) {
    17             return UIColor.grayColor()
    18         }
    19 
    20         let rString = (cString as NSString).substringToIndex(2)
    21         let gString = ((cString as NSString).substringFromIndex(2) as NSString).substringToIndex(2)
    22         let bString = ((cString as NSString).substringFromIndex(4) as NSString).substringToIndex(2)
    23 
    24         var r:CUnsignedInt = 0, g:CUnsignedInt = 0, b:CUnsignedInt = 0;
    25         NSScanner(string: rString).scanHexInt(&r)
    26         NSScanner(string: gString).scanHexInt(&g)
    27         NSScanner(string: bString).scanHexInt(&b)
    28 
    29         return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: CGFloat(1))
    30     }
    31 }
    复制代码

     

     

    二、简便方法,直接调用代码片段

    个人推荐使用这个方法,创建一个宏定义文件

    复制代码
     1 func kRGBColorFromHex(rgbValue: Int) -> (UIColor) {
     2 
     3         return UIColor(red: ((CGFloat)((rgbValue & 0xFF0000) >> 16)) / 255.0,
     4                  green: ((CGFloat)((rgbValue & 0xFF00) >> 8)) / 255.0,
     5                   blue: ((CGFloat)(rgbValue & 0xFF)) / 255.0,
     6                  alpha: 1.0)
     7 }
     8 
     9 可以这样调用
    10 kRGBColorFromHex(0x1D1D26)
    复制代码

     

         

     

     

         在实际开发中,我们拿到的设计图上的颜色往往标注的是十六进制的,而在不添加第三方库的情况下 UIColor 并不支持从十六进制数字初始化,手动将十六进制颜色转化为 RGB 形式十分浪费精力,我们可以通过为 UIColor 添加扩展的方式来支持直接从十六进制数值初始化从而为我们的开发带来便利。


    1.添加文件

    在项目中添加一个用于编写扩展代码的文件,将其命名为 UIColor+valueRGB.swift

    2.添加扩展代码

    在第一步创建的文件中添加如下代码:

    import UIKit
    
    extension UIColor {
        //用数值初始化颜色,便于生成设计图上标明的十六进制颜色
        convenience init(valueRGB: UInt, alpha: CGFloat) {
            self.init(
                red: CGFloat((valueRGB & 0xFF0000) >> 16) / 255.0,
                green: CGFloat((valueRGB & 0x00FF00) >> 8) / 255.0,
                blue: CGFloat(valueRGB & 0x0000FF) / 255.0,
                alpha: alpha
            )
        }
    }

    3.调用

    然后我们就可以在工程中以如下方式直接从十六进制数字初始化 UIColor 了:

    let testColor = UIColor(valueRGB: 0x666666, alpha: 1.0)





    Swift - UIColor使用自定义的RGB配色 

    1,比如rgb 色值为55、 186 、89 那么给UIColor设置里面要除以255
    1
    UIColor(red: 55/255, green: 186/255, blue: 89/255, alpha: 0.5)

    2,设置16进制颜色也同上
    1
    UIColor(red: 0x37/255, green: 0xba/255, blue: 0x46/255, alpha: 0.5)
     
     

    实际上这里没有做十六进制的限定,只需要是 UInt 类型都可以

     

    展开全文
  • //给UIColor扩展extension UIColor { /// 用十六进制颜色创建UIColor /// /// - Parameter hexColor: 十六进制颜色 (0F0F0F) convenience init(hexColor: String) { // 存储转换后的数值 var red:UInt32 = 0, ...

    //给UIColor扩展

    
    
    extension UIColor {
    
        /// 用十六进制颜色创建UIColor
        ///
        /// - Parameter hexColor: 十六进制颜色 (0F0F0F)
        convenience init(hexColor: String) {
    
            // 存储转换后的数值
            var red:UInt32 = 0, green:UInt32 = 0, blue:UInt32 = 0
    
            // 分别转换进行转换
            Scanner(string: hexColor[0..<2]).scanHexInt32(&red)
    
            Scanner(string: hexColor[2..<4]).scanHexInt32(&green)
    
            Scanner(string: hexColor[4..<6]).scanHexInt32(&blue)
    
            self.init(red: CGFloat(red)/255.0, green: CGFloat(green)/255.0, blue: CGFloat(blue)/255.0, alpha: 1.0)
        }
    }
    

    //然后再给string扩展一次

    extension String {
    
        /// String使用下标截取字符串
        /// 例: "示例字符串"[0..<2] 结果是 "示例"
        subscript (r: Range<Int>) -> String {
            get {
                let startIndex = self.index(self.startIndex, offsetBy: r.lowerBound)
                let endIndex = self.index(self.startIndex, offsetBy: r.upperBound)
    
                return self[startIndex..<endIndex]
            }
        }
    }
    展开全文
  • ios扩展16进制颜色

    2018-10-18 09:23:42
    美工给我们作图的时候往往给我们的色值都是十六进制的颜色如 #ff0000,如果先把16进制转换为RGB 的10 进制那将是非常麻烦的事,我们可以为 UIColor 添加一个扩展类(UIColor+Ext.swift)实现16进制颜色 import UIKit ...

    iOS开发一般都是用到RGB颜色,美工给我们作图的时候往往给我们的色值都是十六进制的颜色如 #ff0000,如果先把16进制转换为RGB 的10 进制那将是非常麻烦的事,我们可以为 UIColor 添加一个扩展类(UIColor+Ext.swift)实现16进制颜色

    import UIKit
    
    extension UIColor {
      
        static func hexColor(_ hexValue:Int) -> UIColor {
    
        	return UIColor(red: ((CGFloat)((hexValue & 0xFF0000) >> 16)) / 255.0,
                       green: ((CGFloat)((hexValue & 0xFF00) >> 8)) / 255.0,
                       blue: ((CGFloat)(hexValue & 0xFF)) / 255.0,
                       alpha: 1.0)
        }
    }
    

    UIColor.hexColor(0xf55a5d)

    UIColor.hexColor(0xf55a5d)

    即可方便使用颜色

    如果对您有帮助,点个赞支持 奶茶37.2℃ 创作更优秀的博文

    展开全文
  • ============方法一://给String添加扩展extenton, 注意extention要写在类的外面 ... /// 将十六进制颜色转伟UIColor  /// - Returns: UIColor  public func toUIColor() -> UIColor {  //处理
  • swift 中利用UIColor扩展创建16进制转UIColor类如下: 代码如下:extension UIColor { class func hexStringToColor(hexString: String) -> UIColor{ var cString: String = hexString.trimmingCharacters(in: ...
  • Swift 颜色16进制转换

    2018-02-27 15:40:29
    新建 .swift 文件 给颜色 UIColor 添加扩展 import Foundation import UIKit extension UIColor{ convenience init(valueStr:String) { let scanner:Scanner = Scanner(string:valueStr) var valueRGB:UI...
  • extension UIColor {  class func hexStringToColor(hexString: String) -> UIColor{  var cString: String = hexString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineChar
  • UIColor和16进制互转,UIColor转RGBA
  • //显示16进制颜色 + (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha {    //删除字符串中的空格    NSString *cString = [[color stringByTrimmingCharactersInSet:...
  • import UIKitextension UIColor { //用数值初始化颜色,便于生成设计图上标明的十六进制颜色 convenience init(valueRGB: UInt, alpha: CGFloat) { self.init( red: CGFloat((valueRGB &amp; 0xFF0000) &...
  • func colorWithHexString (hex:String) -> UIColor {   var cString:String ...= hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).uppercaseString ... 
  • 一\ 写一个函数: func UIColorFromRGB(rgbValue: UInt) -> UIColor { return UIColor( red: CGFloat((rgbValue & 0xFF0000) >... 16) / 255.0, green: CGFloat((rgbValue &...
  • I am trying to use hex color values in Swift, instead of the few standard ones that UIColor allows
  • ios中有时候UI给的一个色号就像 #54e1b7 这个,而我们一般设置颜色都是根据RBG来设置的,所以这里需要把这个16进制的色号转为RGB值,这里我们就使用一下的方法来调用设置颜色。 UIColor * mycolor = [self...
  • 项目中,开发文档里面,有时颜色UI给的我们是16进制的,我们在XCode中使用,需要转化一下: 创建一个UIColor的扩展
  • 在开发中美工进行标注都是十六进制颜色值,很少直接写具体的颜色值,有时出现的具体的颜色值也是已经规定好的十六进制颜色值;十六进制一般以#开头,也有0x开头的,后面的才是真正的颜色值,一般都是6位数字或者...
  • swift-16进制颜色

    2017-07-31 15:35:43
    func colorWithHexString(hexColor : String) -> UIColor {    if hexColor.isEmpty {  return UIColor.clear  }    var cString = hexColor.trimm
  • * 设置16进制颜色: * 可识别类型 * 1:有# * 2:没有# * 3:含有0X */ extension UIColor{ class func hexadecimalColor(hexadecimal:String)->UIColor{ var cstr = hexadecimal.trimmi...
1 2 3 4 5 ... 20
收藏数 783
精华内容 313
关键字:

16进制颜色 swift