[ios] UIColor에서 RGB 값을 얻는 방법은 무엇입니까?

다음 코드를 사용하여 색상 개체를 만들고 있습니다.

curView.backgroundColor = [[UIColor alloc] initWithHue:229 saturation:40 brightness:75 alpha:1];

생성 된 색상 개체에서 RGB 값을 검색하려면 어떻게해야합니까?



답변

const CGFloat *colors = CGColorGetComponents( curView.backgroundColor.CGColor );

다음 링크는 추가 세부 정보를 제공합니다.


답변

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 및 4

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];