HexColor 是一个小型库,可将十六进制表示法(例如 #eb5e34)的颜色转换为常用的标准颜色对象 NSColor(用于 macOS)或 UIColor(用于 iOS、tvOS 和 watchOS)。
在 NSColor
上调用静态函数 fromHexString
,并传递包含十六进制颜色值的字符串
let color = NSColor.fromHexString("#eb5e34") ?? .white
该函数返回一个 NSColor
对象。
无效的十六进制颜色代码将导致返回 nil
。 在这种情况下,您可以使用 ??
语法来默认为另一种颜色。
十六进制字符串中的 #
字符是可选的,可以省略
let color = NSColor.fromHexString("eb5e34")
也可以使用简写的 3 位数表示法
let color = NSColor.fromHexString("e53") // same hex color code as "ee5533"
如果可用,则从十六进制字符串中获取 alpha 通道
let color = NSColor.fromHexString("eb5e34cc") // the "cc" will convert to the alpha value 0.8
如果不可用,则假定为“ff”,alpha 值将为 1。
可以显式设置 alpha 值。 在这种情况下,将忽略十六进制字符串中的 alpha 部分
let color = NSColor.fromHexString("eb5e34cc", alpha: 0.5) // ignores "cc" and uses alpha value 0.5
您可以使用为 NSColor
提供的相同函数转换为 UIColor
let color = UIColor.fromHexString("#eb5e34") ?? .white
如果您需要将颜色转换为更通用的结构,则可以使用在 HexColor
结构中定义的函数(需要 import HexColor
)
let integer = HexColor.intFromHexString("#eb5e34") //returns the integer value 0xeb5e34ff
let (r, g, b, a) = HexColor.rgbaFromInt(0xeb5e34ff) //returns a tuple containing the (red, green, blue, alpha) CGFloat color components
此库是一个 Swift 模块,可以用作 Package.swift
文件中的依赖项
.package(url: "https://github.com/WilhelmOks/HexColor.git", from: "1.0.1")
在 macOS 上 import HexNSColor
或在 iOS/tvOS/watchOS 上 import HexUIColor
。
或者,您可以简单地将源文件复制到您的项目中。
您需要文件 Sources/HexColor/HexColor.swift
。
另外,macOS 需要 Sources/HexNSColor/NSColorExtensions.swift
,iOS/tvOS/watchOS 需要 Sources/HexUIColor/UIColorExtensions.swift
。