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

[Swift]扩展UIColor:实现十六进制颜色字符串与UIColor之间的相互转换 ...

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

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/ 
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10647238.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

对【UIColor】进行扩展

 1 import UIKit
 2  
 3 extension UIColor {
 4      
 5     // Hex String -> UIColor
 6     convenience init(hexString: String) {
 7         let hexString = hexString.trimmingCharacters(in: .whitespacesAndNewlines)
 8         let scanner = Scanner(string: hexString)
 9          
10         if hexString.hasPrefix("#") {
11             scanner.scanLocation = 1
12         }
13          
14         var color: UInt32 = 0
15         scanner.scanHexInt32(&color)
16          
17         let mask = 0x000000FF
18         let r = Int(color >> 16) & mask
19         let g = Int(color >> 8) & mask
20         let b = Int(color) & mask
21          
22         let red   = CGFloat(r) / 255.0
23         let green = CGFloat(g) / 255.0
24         let blue  = CGFloat(b) / 255.0
25          
26         self.init(red: red, green: green, blue: blue, alpha: 1)
27     }
28      
29     // UIColor -> Hex String
30     var hexString: String? {
31         var red: CGFloat = 0
32         var green: CGFloat = 0
33         var blue: CGFloat = 0
34         var alpha: CGFloat = 0
35          
36         let multiplier = CGFloat(255.999999)
37          
38         guard self.getRed(&red, green: &green, blue: &blue, alpha: &alpha) else {
39             return nil
40         }
41          
42         if alpha == 1.0 {
43             return String(
44                 format: "#%02lX%02lX%02lX",
45                 Int(red * multiplier),
46                 Int(green * multiplier),
47                 Int(blue * multiplier)
48             )
49         }
50         else {
51             return String(
52                 format: "#%02lX%02lX%02lX%02lX",
53                 Int(red * multiplier),
54                 Int(green * multiplier),
55                 Int(blue * multiplier),
56                 Int(alpha * multiplier)
57             )
58         }
59     }
60 }

测试示例:

1 // 16进制颜色 -> UIColor
2 let color = UIColor(hexString: "#A1A1A1")
3 print("UIColor:", color)
4          
5 // UIColor -> 16进制颜色
6 let hexString = color.hexString
7 print("16进制颜色值:", hexString ?? "")

测试结果:

1 UIColor: UIExtendedSRGBColorSpace 0.631373 0.631373 0.631373 1
2 16进制颜色值: #A1A1A1

 


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
[Swift]LeetCode977.有序数组的平方|SquaresofaSortedArray发布时间:2022-07-13
下一篇:
iOSframework打包生成和使用(oc+swift)发布时间: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