假设我有一个十六进制,例如:5fc9f8
是否存在接受“黑暗程度”(-10到10)并返回反映该水平的十六进制的函数?
黑暗是指添加黑色/从颜色中删除黑色。
import UIKit
extension StringProtocol {
subscript(range: Range<Int>) -> SubSequence {
let start = self.index(startIndex, offsetBy: range.lowerBound, limitedBy: endIndex) ?? endIndex
return self[start..<(self.index(start, offsetBy: range.count, limitedBy: endIndex) ?? endIndex)]
}
var hexaCGFloat: CGFloat { .init(strtoul(String(self), nil, 16)) }
}
extension UIColor {
var rgb: (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)? {
var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0
guard getRed(&red, green: &green, blue: &blue, alpha: &alpha) else {
return nil
}
return (red, green, blue, alpha)
}
var hsb: (hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat)? {
var hue: CGFloat = 0, saturation: CGFloat = 0, brightness: CGFloat = 0, alpha: CGFloat = 0
guard getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha) else {
return nil
}
return (hue, saturation, brightness, alpha)
}
var hsl: (hue: CGFloat, saturation: CGFloat, lightness: CGFloat, alpha: CGFloat)? {
guard let rgb = rgb, let hsb = hsb else { return nil }
let maximum = max(rgb.red, rgb.green, rgb.blue)
let minimum = min(rgb.red, rgb.green, rgb.blue)
let range = maximum - minimum
let lightness = (maximum + minimum) / 2.0
let saturation = range == 0 ? 0 : range / { return lightness < 0.5 ? lightness * 2 : 2 - (lightness * 2) }()
return (hsb.hue, saturation, lightness, hsb.alpha)
}
convenience init(hue: CGFloat, saturation: CGFloat, lightness: CGFloat , alpha: CGFloat) {
var saturation = saturation
let lightness = lightness * 2
saturation *= lightness <= 1 ? lightness : 2 - lightness
self.init(hue: hue,
saturation: lightness == 0 ? 0 : (2 * saturation) / (lightness + saturation),
brightness: (lightness+saturation)/2,
alpha: 1)
}
convenience init(hexa: String, alpha: Double) {
self.init(red: hexa[0..<2].hexaCGFloat / 255,
green: hexa[2..<4].hexaCGFloat / 255,
blue: hexa[4..<6].hexaCGFloat / 255,
alpha: .init(alpha))
}
}
游乐场测试
let color = UIColor(hexa: "5fc9f8", alpha: 1)
if let colorHSL = color.hsl {
let hue = colorHSL.hue
let saturation = colorHSL.saturation
let lightness = colorHSL.lightness
let lighterColor = UIColor(hue: hue,
saturation: saturation,
lightness: min(lightness * 1.3, 1),
alpha: 1)
let darkerColor = UIColor(hue: hue,
saturation: saturation,
lightness: max(lightness * 0.5, 0),
alpha: 1)
print("lighterColor:", lighterColor, "darkerColor:", darkerColor)
}
我想改变我的应用程序中的原色,所以我尝试: 但这不起作用,所以我检查了文档,找到了另一种方法,即使用 所以我的问题是:如何用十六进制颜色改变原色
问题内容: 我正在尝试在Swift中使用十六进制颜色值,而不是允许您使用的几个标准颜色值,但是我不知道该怎么做。 示例:如何将其用作颜色? 问题答案: 实际上是用十六进制表示的3种颜色分量- 红色,绿色和蓝色。您可以使用前缀在Swift中编写十六进制表示法,例如 为了简化转换,让我们创建一个采用整数(0-255)值的初始化程序: 用法: 如何获得阿尔法? 根据您的用例,您可以简单地使用本机方法,例
这就是我所做的 这将返回一个字符串“0XFFhexcode”,我想将其转换为long,将其存储,然后将其用作颜色 我有以下错误
本文向大家介绍Flutter十六进制颜色转换成颜色对象,包括了Flutter十六进制颜色转换成颜色对象的使用技巧和注意事项,需要的朋友参考一下 十六进制颜色值格式一般如:#ff0000,以#开头,后面跟着6个十六进制字符。 而flutter中不能直接使用此类形式的颜色值,所以必须要转换为flutter颜色对象。 参考地址: https://stackoverflow.com/questions/5
问题内容: 我在该主题上找到的所有内容都只是将十六进制转换为rgb,然后添加一个Alpha1。我也想从十六进制数字中获得所需的Alpha。 诸如或明显具有不为0或1的Alpha值的颜色。 问题答案: 我已经制作了一个快速的JSfiddle表格,可以将8位十六进制代码转换为CSS rgba值;) 基础很简单-将您提供的字符串分成两位数的一部分,并转换为alpha通道的百分比率和RGB通道的小数位。标
如何在Flutter中添加十六进制值的颜色?例如,我正在尝试以下操作: 提前致谢