9

我的视图有一个带有文本标签覆盖的背景图像什么是根据背景图像确定文本颜色的最佳/好的动态方法,以便它可以阅读(目前,我只对确定文本颜色是否应该是暗色或光)

谢谢 :)

4

2 回答 2

14

通过提到的链接 woz 找到平均颜色

然后为您的文本设置样式

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;
int bgDelta = ((red * 0.299) + (green * 0.587) + (blue * 0.114));

UIColor *textColor = (255 - bgDelta < threshold) ? [UIColor blackColor] : [UIColor whiteColor];

像这样的东西。

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

于 2013-10-18T18:20:02.683 回答
7

我的第一个方法是找到图像的平均颜色并根据它设置文本颜色。当然,图像可能包含明暗区域,因此您选择的颜色有时可能无法读取。

要查找图像的平均颜色,请尝试以下操作:

http://www.bobbygeorgescu.com/2011/08/finding-average-color-of-uiimage/

获得平均颜色后,检查红色、绿色和蓝色值。如果它们“足够高”(无论您将其定义为什么),请使用深色文本,否则使用浅色文本。

于 2013-10-18T18:10:50.880 回答