我正在开发一个iOS应用程序,其中应用程序的主要颜色(以及状态栏颜色)也可以由用户选择。是否有任何函数可以计算状态栏上的白色或黑色文本颜色是否从RGB或HEX颜色开始编程?
答案 0 :(得分:3)
这就是我的所作所为。总之 - 获取颜色的RGB值。然后根据RGB值计算灰度值。然后根据灰度选择状态栏样式。
第1步 - 从UIColor
:
UIColor *color = // your color
CGFloat red, green, blue, alpha;
if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
CGFloat white;
if ([color getWhite:&white alpha:&alpha]) {
red = green = blue = white;
} else {
NSLog(@"Uh oh, not RGB or grayscale");
}
}
步骤2 - 根据RGB值计算灰度值:
CGFloat gray = 0.299 * red + 0.587 * green + 0.114 * blue;
第3步 - 选择状态栏样式:
UIStatusBarStyle style = gray > 0.6 ? UIStatusBarStyleDefault : UIStatusBarStyleLightContent;
0.6
的使用通常有效。您可能需要根据自己的喜好进行调整。
答案 1 :(得分:0)
查看此链接 Check if UIColor is dark or bright?
你可以用类似的东西找出你的RGB值。
const CGFloat *colors = CGColorGetComponents(self.view.backgroundColor.CGColor );
NSLog(@"R:%f G:%f B:%f",colors[0],colors[1],colors[2]);
然后根据这些颜色计算所需的文字颜色。