尝试从UIColor检索RGB值。但是,-[UIColor getRed:blue:green:alpha]
在我的情况下不起作用。该方法从不返回YES,我认为这意味着该颜色无法转换为RGB。我认为这是因为我的UIColor是由十六进制颜色生成的(例如:#CCCCCC)。
您如何从iOS中基于十六进制的UIColors中获取RGB值?
最佳答案
问题在于您给出的示例。颜色#CCCCCC
是一种灰度颜色,表示UIColor
不是用RGB创建的,而是用灰色创建的。换句话说,它是使用UIColor colorWithWhite:alpha:
创建的。由于您的UIColor
是使用不同于RGB的颜色模型创建的,因此使用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的早期版本中,此方法无效。因此,需要我最初发布的代码。
关于ios - 从从十六进制颜色派生的UIColors获取RGB值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21608422/