• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift-UIColor16进制编码与RGB格式互相转换

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

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 类型都可以

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
swift之向ftp服务器传文件发布时间:2022-07-13
下一篇:
Swift3.0语言教程字符串与URL的数据转换与自由转换发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap