尝试从UIColor检索RGB值。但是,-[UIColor getRed:blue:green:alpha]
在我的情况下不起作用。该方法永远不会返回YES,我认为这意味着颜色不能转换为RGB。我认为这是因为我的UIColor是由Hex颜色生成的(例如:#CCCCCC)。
如何从iOS中基于十六进制的UIColors获取RGB值?
答案 0 :(得分:4)
问题在于您提供的示例。颜色#CCCCCC
是灰度颜色,意味着UIColor
不是用RGB创建的,而是用灰色创建的。换句话说,它是使用UIColor colorWithWhite:alpha:
创建的。由于使用与RGB不同的颜色模型创建UIColor
,因此使用getRed:green:blue:alpha:
返回NO。
你可以做的是: -
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 greyscale");
}
}
更新
从iOS 8开始,行为似乎发生了一些变化。使用UIColor colorWithWhite:alpha:
可以获得使用UIColor getRed:green:blue:alpha:
创建的颜色的RGB值。在早期版本的iOS中,这不起作用。因此需要我最初发布的代码。