我的视图有一个带有文本标签覆盖的背景图片。怎样以最佳/良好的动态方式来确定文本颜色,使其可读性更高(目前,我只对确定文本颜色应该是深还是浅感兴趣)。
谢谢:)
我的视图有一个带有文本标签覆盖的背景图片。怎样以最佳/良好的动态方式来确定文本颜色,使其可读性更高(目前,我只对确定文本颜色应该是深还是浅感兴趣)。
谢谢:)
使用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获取浅色或深色。
我的第一个想法是找到图像的平均颜色,并根据此设置文本颜色。当然,图像可能包含明亮和暗淡的区域,因此您选择的颜色有时可能无法阅读。
要找到图像的平均颜色,请尝试以下操作:
http://www.bobbygeorgescu.com/2011/08/finding-average-color-of-uiimage/
一旦获得了平均颜色,检查红、绿和蓝色的值。如果它们足够高(无论您如何定义),则使用深色文本;否则使用浅色文本。