Vediamo oggi, con questo nuovo Tips & Tricks Xcode, come convertire facilmente un UIColor nei suoi componenti RGB o, viceversa, come convertire un colore da RGB in UIColor. Potremmo avere infatti bisogno per la nostra applicazione di qualche colore in più, rispetto a quelli a disposizione, o magari potremmo trovare interessante poter utilizzare nel nostro codice il classico RGB in esadecimale, preso ad esempio da un programma di fotoritocco. Qualsiasi sia il vostro fine, vi proponiamo questi semplici tips scovati in rete che potrebbero prima o poi tornarvi utili.
Estraiamo il valore dei componenti RGB da un UIColor
Vediamo il primo esempio che ci permetterà di ottenere da un UIColor i rispettivi tre valori RGB (più un quarto valore: alpha, ovvero la trasparenza):
UIColor color = [[UIColor redColor] retain];
CGColorRef colorref = [color CGColor];
int numComponents = CGColorGetNumberOfComponents(colorref);
if (numComponents == 4) {
const CGFloat *components = CGColorGetComponents(colorref);
CGFloat red = components[0];
CGFloat green = components[1];
CGFloat blue = components[2];
CGFloat alpha = components[3];
}
[color release];
Convertiamo un valore RGB in UIColor
Se invece il vostro problema è la scarsa disponibilità di UIColor è vorreste crearne di nuovi, potete usare la seguente istruzione, in cui dovrete specificare i tre colori più il valore alpha (1.0 per nessuna trasparenza):
[[UIColor alloc] initWithRed:20.0 / 255 green:59.0 / 255 blue:102.0 / 255 alpha:1.0]
Se infine volete usare nei vostri listati in Objective-C, direttamente il codice RGB in esadecimale prelevato, ad esempio, da un programma di fotoritocco, una possibile soluzione è questa:
#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
Da utilizzare in questo modo:
UIColor color = UIColorFromRGB(0xF7F7F7);
Per comodità vi postiamo una rappresentazione grafica contenente gli UIColor disponibili con il rispettivo codice esadecimale RGB:

(fonte)









3 Responses to “TIPS#011 – Convertire UIColor in RGB o viceversa RGB in UIColor”
28 Aprile 2010
Giovambattista FazioliPuò essere comodo anche:
#define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]
28 Aprile 2010
Staff devAPPVero! Un altro metodo che può tornare utile.. Grazie per la segnalazione 😉
28 Aprile 2010
Giovambattista FazioliIn aggiunta, per i più smaliziosi, la possibilità di estendere la classe UIColor:
// UIColor+Hex.h
@interface UIColor (Hex)
+ (UIColor *) colorWithHex:(uint) hex;
@end
// UIColor+Hex.m
#import "UIColor+Hex.h"
@implementation UIColor (Hex)
+ (UIColor *) colorWithHex:(uint) hex
{
int red, green, blue, alpha;
blue = hex & 0x000000FF;
green = ((hex & 0x0000FF00) >> 8);
red = ((hex & 0x00FF0000) >> 16);
alpha = ((hex & 0xFF000000) >> 24);
return [UIColor colorWithRed:red/255.0f
green:green/255.0f
blue:blue/255.0f
alpha:alpha/255.f];
}
@end