RGB 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:


iPhone UIColor - RGB

(fonte)