如何将UILabel的textColor与其背景相匹配?

Noa*_*ick 1 objective-c uiimage ios


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

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

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

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

Pri*_*wal 10

通过此链接查找平均颜色

然后设置文本样式

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];
Run Code Online (Sandbox Code Playgroud)

这样的事情.

您还可以使用上面的链接UIColor从图像中获取并使用亚光的 UIColor 类别来获得亮或暗.

看看这个问题.肯定会帮助你.

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

  • 不要复制另一篇文章的内容.除非你要编辑代码.链接很好伙伴. (3认同)