根据背景决定textColor应该是白色还是黑色
我试图根据背景颜色确定textColor应该是黑色还是白色,但它似乎不起作用。首先我创建了一个扩展名来检索rgb值。然后我使用下面的算法来计算,然后确定该值是否高于186.问题是,每次我运行该算法时,它总是返回1左右的值,这低于186这应该是中间值,它决定了文本是否应该是黑或白。我为了计算186左右的数值而做错了什么?这是我发现的是什么确定它是否为黑色或白色,从这个问题根据背景决定textColor应该是白色还是黑色
How to decide font color in white or black depending on background color?
Extenstion
extension UIColor {
var components:(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
var r:CGFloat = 0
var g:CGFloat = 0
var b:CGFloat = 0
var a:CGFloat = 0
getRed(&r, green: &g, blue: &b, alpha: &a)
return (r,g,b,a)
}
}
viewDidLoad中
let colorComp = UIColor(rgba: "#f2f2f2").components
let colorCheck = colorComp.red * 0.299 + colorComp.green * 0.587 + colorComp.blue * 0.114
print(colorCheck)
在这种情况下
red
,和blue
每个返回0.949019607843137
。
的RGB的范围是从0(BLAK)到255(白),但是在这种情况下,范围是0到1应该与此操作计算的新值:
值=(1/255) * 186 = 0.729;
0xF2 = 242 dec = 242/255 = 0.949
那么我在哪里确定它是高于还是低于186? –
在您的函数“let colorComp = UIColor(rgba:”#f2f2f2“)。components”后,您可以将颜色空间从0.0/1.0转换为RG和B的颜色空间1/255,然后对于每种颜色检查值是>还是 Lorenzo
这似乎是正确的。 'components'被定义为返回一个介于0.0和1.0之间的值。您显示的返回值对'f2'除以'ff'看起来很好。如果你想要一个范围在0..255的值,你需要乘以缩放你的结果。 –