2012-01-26 17 views
0

我認爲這將是簡單的,但....如何獲取標籤的背景顏色 - iOS 4?

我怎樣才能得到UILabel的背景顏色(最好在RGB)?

我似乎無法找到一種方法或將UIColor轉換爲RGB的簡單方法。

謝謝。

編輯: 我結束了使用此代碼:

CGFloat r,g,b,a; 
const float* colors=CGColorGetComponents(myLabel.backgroundColor.CGColor); 
r=colors[0]; 
g=colors[1]; 
b=colors[2]; 
a=colors[3]; 

回答

3
CGFloat r,g,b,a; 
UIColor *bgColor = myLabel.backgroundColor; 
[bgColor getRed:&r green:&g blue:&b alpha:&a]; 

或預iOS 5中:

const CGFloat *rgba = CGColorGetComponents([bgColor CGColor]); 
CGFloat r = rgba[0]; 
CGFloat g = rgba[1]; 
CGFloat b = rgba[2]; 
CGFloat a = rgba[3]; 
+0

謝謝,但 「getRed ......」 只在iOS 5以上 – wayneh

+0

OK提供,預iOS 5的代碼 – UIAdam

+0

感謝更新 - 但現在我在這一行得到一個錯誤:'UIColor bgColor = colorLabel.backgroundColor;'「接口類型不能靜態分配」指向「bgColor」... – wayneh

1

怎麼樣的類別?

#import <UIKit/UIKit.h> 

@interface UIColor (RGBGetters) 
-(CGFloat)red; 
-(CGFloat)blue; 
-(CGFloat)green; 
@end 


#import "UIColor+RGBGetters.h" 

@implementation UIColor (RGBGetters) 
-(CGFloat)red 
{ 
    CGFloat r; 
    [self getRed:&r green:nil blue:nil alpha:nil]; 
    return r; 
} 

-(CGFloat)green 
{ 
    CGFloat g; 
    [self getRed:nil green:&g blue:nil alpha:nil]; 
    return g; 
} 

-(CGFloat)blue 
{ 
    CGFloat b; 
    [self getRed:nil green:nil blue:&b alpha:nil]; 
    return b; 
} 
@end 

然後,您可以使用它,如下所示:

CGFloat red=[someLabel.backgroundColor red]; 
+0

Ooops也錯過了iOS 4的部分:不過Adam W已經發布了一個不錯的解決方案。 (這也可以通過一個類別來實現) – Julian