从UIColor获得RGBA Color Components的更好方法是什么?

fuz*_*oat 6 iphone cocoa-touch objective-c

是否有更快(或更好)的方法从UIColor获取[RGBA]颜色组件?这周围似乎有很多变化(有些在这里,所有基本上与我在这里所做的相似)我只是好奇,如果有一个替代,因为它似乎有点"缺乏",因为其他一切都是如此完整而深思熟虑.

if([eachKey isEqualToString:@"NSColor"]) {
    UIColor *newColor = [attrs valueForKey:eachKey];
    //NSLog(@"COLOR: %@", newColor);
    CGColorRef colorRef = [newColor CGColor];
    //NSLog(@"%@", colorRef);
    int numComponets = CGColorGetNumberOfComponents(colorRef);
    if(numComponets == 4) {
        const CGFloat *components = CGColorGetComponents(colorRef);
        CGFloat compR = components[0];
        CGFloat compG = components[1];
        CGFloat compB = components[2];
        CGFloat compA = components[3];

        //NSLog(@"R:%f G:%f B:%f, A:%f", compR, compG, compB, compA);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不是在寻找(我认为我有上面的长版本)我想知道这是不是你应该这样做的方式呢?

Sev*_*yev 16

CGFloat r, g, b, a;    
[MyColor getRed: &r green:&g blue:&b alpha:&a];
Run Code Online (Sandbox Code Playgroud)

需要iOS 5+.