如何将UILabel的textColor与其背景相匹配?
我有一个背景图像和它上面的一些UILabel。
用户可以将背景图像更改为任何东西,而我必须确定在UILabels,白色或黑色中使用哪种颜色会更好?
最好的例子就是iOS 7的主屏幕。
当背景太暗时,文字变成白色,反之亦然。
但是,当背景是在黑暗和光线之间,例如:一半的图像100%白色,另一半100%的黑色 – 文本变成白色,并添加了阴影效果,所以它将是可读的。
我一直面临的问题是如何指出这是什么types的图像?
天黑吗? 它轻吗? 它是在暗光之间吗?
我怎么能把这个对人类来说很清楚的代码转化成代码呢?
我很想自己写代码,但是我不知道。
我开始了解对比度和亮度,但是我不能将这些部分粘合在一起。
我应该从哪里开始? 非常感谢!
通过此链接查找平均颜色
然后devise你的文字
CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0; [averageColor getRed:&red green:&green blue:&blue alpha:&alpha]; int threshold = 105; //Formula for computing Luminance out of RGB, which is something close to luminance = (red * 0.3) + (green * 0.6) + (blue * 0.1). int bgDelta = ((red * 0.299) + (green * 0.587) + (blue * 0.114)); UIColor *textColor = (255 - bgDelta < threshold) ? [UIColor blackColor] : [UIColor whiteColor];
像这样的东西。
您也可以使用上面的链接从图像中获取UIColor
,并使用亚光的 UIColor 类别使其变亮或变暗。
看这个问题 。 肯定会帮助你。
PS:我是复制代码,这样即使这个post被删除,信息也可以使用
我一直使用这个来计算一种颜色的感知亮度,然后相应地改变我的文字颜色。