如何从UIColor获取RGB值?
我正在使用下面的代码创build一个颜色对象。
curView.backgroundColor = [[UIColor alloc] initWithHue:229 saturation:40 brightness:75 alpha:1];
如何从创build的颜色对象中检索RGB值?
const CGFloat *colors = CGColorGetComponents( curView.backgroundColor.CGColor );
这些链接提供了更多的细节
- UIColor参考
- CGColorGetComponents引用
在iOS 5中,您可以使用:
CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha =0.0; [multipliedColor getRed:&red green:&green blue:&blue alpha:&alpha];
SWIFT 3
我发现cgColor.components不会总是返回4个颜色值,所以我改变了这一点,所以它从CIColor包装
extension UIColor { var redValue: CGFloat{ return CIColor(color: self).red } var greenValue: CGFloat{ return CIColor(color: self).green } var blueValue: CGFloat{ return CIColor(color: self).blue } var alphaValue: CGFloat{ return CIColor(color: self).alpha } }
SWIFT 2
extension UIColor { var red: CGFloat{ return CGColorGetComponents(self.CGColor)[0] } var green: CGFloat{ return CGColorGetComponents(self.CGColor)[1] } var blue: CGFloat{ return CGColorGetComponents(self.CGColor)[2] } var alpha: CGFloat{ return CGColorGetComponents(self.CGColor)[3] } }
这不是最有效的方式,所以我不会去使用这个视图将不断重新绘制。
希望这会有所帮助
CGFloat red, green, blue, alpha; //Create a sample color UIColor *redColor = [UIColor redColor]; //Call [redColor getRed: &red green: &green blue: &blue alpha: &alpha]; NSLog(@"red = %f. Green = %f. Blue = %f. Alpha = %f", red, green, blue, alpha);
刚刚为此做了一个类别。
NSLog(@"%f", [UIColor blueColor].blue); // 1.000000
像这样的东西:
typedef enum { R, G, B, A } UIColorComponentIndices; @implementation UIColor (EPPZKit) -(CGFloat)red { return CGColorGetComponents(self.CGColor)[R]; } -(CGFloat)green { return CGColorGetComponents(self.CGColor)[G]; } -(CGFloat)blue { return CGColorGetComponents(self.CGColor)[B]; } -(CGFloat)alpha { return CGColorGetComponents(self.CGColor)[A]; } @end
eppz!kit
一部分,具有更多的UIColor好吃的东西 。
const float* colors = CGColorGetComponents( curView.backgroundColor.CGColor );
谢谢。 我不得不在行的开头添加const
,因为它正在产生一个警告。
UIColor *color = [[UIColor greenColor] retain]; //line 1 //OR(You will have color variable either like line 1 or line 2) color = curView.backgroundColor;//line 2 CGColorRef colorRef = [color CGColor]; int _countComponents = CGColorGetNumberOfComponents(colorRef); if (_countComponents == 4) { const CGFloat *_components = CGColorGetComponents(colorRef); CGFloat red = _components[0]; CGFloat green = _components[1]; CGFloat blue = _components[2]; CGFloat alpha = _components[3]; NSLog(@"%f,%f,%f,%f",red,green,blue,alpha); } [color release];
David Rees的Swift 3版本回答:
extension UIColor { var redValue: CGFloat{ return cgColor.components! [0] } var greenValue: CGFloat{ return cgColor.components! [1] } var blueValue: CGFloat{ return cgColor.components! [2] } var alphaValue: CGFloat{ return cgColor.components! [3] } }
从iOS 2.0开始, UIColor
上有一个名为styleString
的私有实例方法,它返回RGB或RGBAstring的颜色表示,即使对于RGB空间以外的颜色(如whiteColor)也是如此。
Objective-C的:
@interface UIColor (Private) - (NSString *)styleString; @end // ... [[UIColor whiteColor] styleString]; // rgb(255,255,255) [[UIColor redColor] styleString]; // rgb(255,0,0) [[UIColor lightTextColor] styleString]; // rgba(255,255,255,0.600000)
在Swift中,你可以使用桥头来暴露接口。 使用纯Swift,您将需要使用私有方法创build@objc
协议,并使用协议创buildunsafeBitCast
UIColor
:
@objc protocol UIColorPrivate { func styleString() -> String } let white = UIColor.whiteColor() let red = UIColor.redColor() let lightTextColor = UIColor.lightTextColor() let whitePrivate = unsafeBitCast(white, UIColorPrivate.self) let redPrivate = unsafeBitCast(red, UIColorPrivate.self) let lightTextColorPrivate = unsafeBitCast(lightTextColor, UIColorPrivate.self) whitePrivate.styleString() // rgb(255,255,255) redPrivate.styleString() // rgb(255,0,0) lightTextColorPrivate.styleString() // rgba(255,255,255,0.600000)
我想获得UITableViewStyle
“UITableViewStyleGrouped”的背景颜色,所以在viewDidAppear:
方法我添加了代码:
NSLog(@"%@", self.tableView.backgroundView.backgroundColor);
它做了我所期望的并返回了日志:
UIDeviceRGBColorSpace 0.937255 0.937255 0.956863 1
所以简而言之就是inputNSLog(@"%@", [UIColor whateverColor]);
使用HandyUIKit使这非常简单 :
import HandyUIKit let color = UIColor(red: 0.1, green: 0.2, blue: 0.3, alpha: 0.4) // get any of the rgba values color.rgba.red // => 0.1 color.rgba.green // => 0.2 color.rgba.blue // => 0.3 color.rgba.alpha // => 0.4
还有一个类似的选项来获取hsba
值 :
let color = UIColor(hue: 0.1, saturation: 0.2, brightness: 0.3, alpha: 0.4) // you can get any of the hsba values, too color.hsba.hue // => 0.1 color.hsba.saturation // => 0.2 color.hsba.brightness // => 0.3 color.hsba.alpha // => 0.4
只需使用迦太基安装它 ,你很好去。
我希望它有帮助!
像这样设置你的UIColor
UIColor.FromRGB(128, 179, 255)
这是Xamarin ios …但肯定有这样一个快速的方法。