根据背景确定textColor是白色还是黑色

时间:2015-10-05 13:21:38

标签: ios objective-c swift

我正在尝试根据背景颜色确定textColor应该是黑色还是白色,但它似乎不起作用。首先,我创建了一个检索rgb值的扩展。然后我使用下面的算法来计算,然后确定该值是否高于186.问题是,每次我运行算法时它总是返回1左右,这远低于186应该是中间,它决定文本是否应该是黑或白。为了计算186左右的值,我做错了什么?我发现的是从这个问题中确定它是黑色还是白色

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)
在这种情况下,{p> redgreenblue各返回0.949019607843137

1 个答案:

答案 0 :(得分:1)

RGB范围从0(blak)到255(白色)但在这种情况下范围是0到1.您应该使用此操作计算新值:

值=(1/255)* 186 = 0.729;

0xF2 = 242 dec = 242/255 = 0.949