SwiftUI处理十六进制颜色 | 来自缤纷多彩的灰

SwiftUI处理十六进制颜色 @ WHlcj | 2023-06-17T01:48:47+08:00 | 1 分钟阅读

由于Apple官方并没有在SwiftUI中给出十六色处理接口,这里介绍两种十六色处理方法.

代码处理法

    首先就是通过扩展Color的代码方式实现对十六进制颜色的计算。好处是可以直接使用十六进制的颜色。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import SwiftUI

extension Color {
    
    init(hex: String) {
        var hexValue = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
        
        if hexValue.hasPrefix("0X") {
            hexValue = String(hexValue.dropFirst(2))
        }
        
        if hexValue.count != 6 {
            self.init(.gray)
            return
        }
        
        var rgbValue: UInt64 = 0
        Scanner(string: hexValue).scanHexInt64(&rgbValue)
        
        self.init(red: Double((rgbValue & 0xFF0000) >> 16) / 255.0,
                  green: Double((rgbValue & 0x00FF00) >> 8) / 255.0,
                  blue: Double(rgbValue & 0x0000FF) / 255.0)
    }
}

    使用方法如下

第三方工具处理法

    还有一种比较方便的方法就是通过第三方工具,将十六进制color转化为rgb制。我个人更偏向于这种方法,个人觉得实际开发中颜色本身应该放入到常量部分,所以通过代码扩展形式没有太大必要,就用rgb就好转化也方便,这样处理减少了冗余代码。这里给出一个不错的转化网站uicolor.io,这个网站可以实时根据你的输入背景切换成不同的颜色,操作也很方便直接输入十六进制颜色就行,也可以用来自己摸索出一个不错的颜色。

分享两个选色网站

    最后再分享两个不错的十六进制选色网站flatuicolors.comcolorhunt.co方便大家选择喜欢的颜色哦~