我有一张背景图片,上面有一些UILabel
用户可以将背景图像更改为任何颜色,而我必须确定哪种颜色可以更好地用于UILabels,白色还是黑色?
最好的例子是iOS 7主屏幕
当背景暗时,文本变为白色,反之亦然
但是,当背景介于黑暗和光线之间时,例如:半图像100%白色,另一半100%黑色 - 文本变为白色,并添加阴影效果,因此它将是可读的。
我一直面临的问题是如何指出这是什么类型的图像?
天黑了吗?这很轻吗?它是在暗光之间吗?
我怎样才能将这一点转化为人类对代码的清晰度?
我显然想自己编写代码,但我不知道
我开始学习对比度和亮度,但我不能将各个部分粘在一起
我应该从哪里开始?非常感谢你!
答案 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,然后相应地更改文字颜色。