如何将标签的文字颜色与其背景相匹配?

时间:2014-01-07 17:37:25

标签: ios objective-c uiimage


我有一张背景图片,上面有一些UILabel 用户可以将背景图像更改为任何颜色,而我必须确定哪种颜色可以更好地用于UILabels,白色还是黑色?

最好的例子是iOS 7主屏幕 当背景暗时,文本变为白色,反之亦然 但是,当背景介于黑暗和光线之间时,例如:半图像100%白色,另一半100%黑色 - 文本变为白色,并添加阴影效果,因此它将是可读的。

我一直面临的问题是如何指出这是什么类型的图像?
天黑了吗?这很轻吗?它是在暗光之间吗? 我怎样才能将这一点转化为人类对代码的清晰度?

我显然想自己编写代码,但我不知道 我开始学习对比度和亮度,但我不能将各个部分粘在一起 我应该从哪里开始?非常感谢你!

2 个答案:

答案 0 :(得分:10)

使用此link

查找平均颜色

然后设置文字样式

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 R G B, 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,并使用matt's category为UIColor获得亮或暗。

看看this Question。肯定能帮到你。

PS:我正在复制代码,以便即使删除帖子,也可以获得信息

答案 1 :(得分:0)

我一直在使用calculate the perceived brightness of a color,然后相应地更改文字颜色。