我試圖根據背景顏色確定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
。
這似乎是正確的。 'components'被定義爲返回一個介於0.0和1.0之間的值。您顯示的返回值對'f2'除以'ff'看起來很好。如果你想要一個範圍在0..255的值,你需要乘以縮放你的結果。 –