【问题标题】:How to match UILabel's textColor to its background? [duplicate]如何将 UILabel 文本颜色与其背景匹配? [复制]
【发布时间】:2014-01-25 12:33:38
【问题描述】:


我有一个背景图片和上面的一些 UILabel。
背景图像可以由用户更改为任何颜色,而我必须确定在 UILabels 中使用哪种颜色更好,白色还是黑色?

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

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

明明是想自己写代码,却一点头绪都没有。
我开始学习对比度和亮度,但我无法将它们粘合在一起。
我应该从哪里开始?非常感谢!

【问题讨论】:

    标签: ios objective-c uiimage


    【解决方案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,然后相应地更改我的文本颜色。

    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 2019-01-02
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多