2012-11-04 22 views
39

Voglio utilizzare NSAttributedString nel mio progetto, ma quando sto provando a impostare il colore, che non è il set standard (redColor, blackColor, greenColor ecc.) UILabel visualizza queste lettere in colore bianco. Ecco la mia riga di questo codice.Come posso creare un UIColor da RGBA?

[attributedString addAttribute:NSForegroundColorAttributeName 
         value:[UIColor colorWithRed:66 
               green:79 
               blue:91 
               alpha:1] 
         range:NSMakeRange(0, attributedString.length)]; 

ho cercato di fare il colore con CIColor dal Nucleo quadro Immagine, ma ha mostrato gli stessi risultati. Cosa devo cambiare nel mio codice per eseguirlo nel modo giusto?

Thx per le risposte, ragazzi!

risposta

95

I valori non sono corretti, è necessario dividere ciascun valore di colore di 255,0.

[UIColor colorWithRed:66.0f/255.0f 
       green:79.0f/255.0f 
       blue:91.0f/255.0f 
       alpha:1.0f]; 

Lo stato documenti:

+ (UIColor *)colorWithRed:(CGFloat)red 
        green:(CGFloat)green 
        blue:(CGFloat)blue 
        alpha:(CGFloat)alpha 

Parametri

rossi Il componente rossa dell'oggetto colore, specificato come un valore da 0,0 a 1,0.

verde Il componente verde dell'oggetto colore, specificato come valore da 0.0 a 1.0.

blu Il componente blu dell'oggetto colore, specificato come valore da 0.0 a 1.0.

alpha Il valore di opacità dell'oggetto colore, specificato come valore da 0.0 a 1.0.

Reference here.

+1

Funziona bene, ora mi sento idiota dopo un tale errore! Grazie! – x401om

5

UIColor utilizza un range da 0 a 1.0, non interi a 255 .. Prova questo:

// create color 
UIColor *color = [UIColor colorWithRed:66/255.0 
           green:79/255.0 
            blue:91/255.0 
           alpha:1]; 

// use in attributed string 
[attributedString addAttribute:NSForegroundColorAttributeName 
         value:color 
         range:NSMakeRange(0, attributedString.length)]; 
+0

Perché è così ?! –

3

Si prega di provare il codice

[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0] range:NSMakeRange(0, attributedString.length)]; 

come

Label.textColor=[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0]; 

I componenti RGB di UIColor vengono ridimensionati tra 0 e 1, non fino a 255.

24

Uno dei miei macro preferite, nessun progetto senza:

#define RGB(r, g, b) [UIColor colorWithRed:(float)r/255.0 green:(float)g/255.0 blue:(float)b/255.0 alpha:1.0] 
#define RGBA(r, g, b, a) [UIColor colorWithRed:(float)r/255.0 green:(float)g/255.0 blue:(float)b/255.0 alpha:a] 

Utilizzando come:

[attributedString addAttribute:NSForegroundColorAttributeName 
         value:RGB(66, 79, 91) 
         range:NSMakeRange(0, attributedString.length)]; 
+0

per favore, per favore? –

+1

Ciao @JaswanthKumar controlla la mia risposta per la versione 'Swift'. –

2

Dal chiesto @Jaswanth Kumar, ecco la versione Swift da LSwift:

extension UIColor { convenience init(rgb:UInt, alpha:CGFloat = 1.0) { self.init( red: CGFloat((rgb & 0xFF0000) >> 16)/255.0, green: CGFloat((rgb & 0x00FF00) >> 8)/255.0, blue: CGFloat(rgb & 0x0000FF)/255.0, alpha: CGFloat(alpha) ) } }

Utilizzo : let color = UIColor(rgb: 0x112233)

Problemi correlati