我試圖根據它後面的圖像的平均顏色來設置標籤的顏色。如果平均顏色較暗,則將UILabel
文本顏色設置爲白色,否則將其設置爲黑色。爲什麼黑色以外的結果的平均顏色屈服?
我按照教程here的平均顏色邏輯,似乎工作得很好。然後我按照接受的答案here瞭解是否將其設置爲白色或黑色,這是我認爲問題所在的邏輯。出於某種原因,無論圖像是黑色還是白色,文本顏色總是黑色。
這是我在斯威夫特代碼:
var averageColor = thumbnailImage.image!.averageColor()
var red = 0.0 as CGFloat, green = 0.0 as CGFloat, blue = 0.0 as CGFloat, alpha = 0.0 as CGFloat
averageColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
let threshold = 150
var bgDelta = ((red * 0.299) + (green * 0.587) + (blue * 0.114))
if (255 - Double(bgDelta) > Double(threshold)) {
self.eventName.textColor = .blackColor()
println("black")
} else {
println("white")
self.eventName.textColor = .whiteColor()
}
注:我試着改變閾無濟於事。似乎產生結果的唯一值是255,這是最大值。
您是否嘗試過看你的代碼運行時不同的變量是什麼?例如,「255 - Double(bgDelta)」評估的是什麼? – oisdk