如何将 UILabel 文本颜色与其背景匹配? [复制]
Posted
技术标签:
【中文标题】如何将 UILabel 文本颜色与其背景匹配? [复制]【英文标题】:How to match UILabel's textColor to its background? [duplicate] 【发布时间】:2014-01-25 12:33:38 【问题描述】:我有一个背景图片和上面的一些 UILabel。 背景图像可以由用户更改为任何颜色,而我必须确定在 UILabels 中使用哪种颜色更好,白色还是黑色? 最好的例子是 ios 7 主屏幕。 当背景较暗时,文字变为白色,反之亦然。 但是,当背景介于深色和浅色之间时,例如:一半图像 100% 白色,另一半 100% 黑色 - 文本变为白色并添加阴影效果,使其可读。 我一直面临的问题是如何指示这是什么类型的图像? 天黑了吗?它轻吗?是在暗光之间吗? 我怎样才能将人类很清楚的代码变成代码? 明明是想自己写代码,却一点头绪都没有。 我开始学习对比度和亮度,但我无法将它们粘合在一起。 我应该从哪里开始?非常感谢!
【问题讨论】:
【参考方案1】:用这个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 位兄弟 @pavan .. 我在回答中提到了我的意图。请让我知道它是否错了。 :) 嘿,我读了答案,但似乎答案是指背景颜色,但我有一个完整的图像。获得图像的平均颜色就足够了吗?还是需要一个全新的算法? 这个答案建议您找到图像的平均 RGB 分量并为您的文本导出 RGB,以便它可见。它可能并不适合所有情况,但对于大多数情况来说,已经足够了。 @NoamSolovechick 不需要其他算法,试试这个。如果它不起作用,请告诉我【参考方案2】:我一直使用它来calculate the perceived brightness of a color,然后相应地更改我的文本颜色。
【讨论】:
以上是关于如何将 UILabel 文本颜色与其背景匹配? [复制]的主要内容,如果未能解决你的问题,请参考以下文章