2012-11-04 15 views
39

Ich mag NSAttributedString in meinem Projekt verwenden, aber wenn ich versuche, Farbe zu setzen, die nicht aus dem Standardsatz ist (redColor, blackColor, greenColor etc.) UILabel diese Buchstaben in weißer Farbe anzeigt. Hier ist meine Zeile dieses Codes.Wie erstelle ich einen UIColor aus RGBA?

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

Ich versuchte Farbe mit CIColor von Core Image Rahmen zu machen, aber es zeigte die gleichen Ergebnisse. Was sollte ich in meinem Code ändern, um es korrekt auszuführen?

Thx für Antworten, Leute!

Antwort

95

Ihre Werte sind falsch, Sie müssen jeden Farbwert durch 255.0 teilen.

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

docs Zustand:

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

Parameter

rot die rote Komponente des Farbobjekts, als ein Wert von 0,0 bis 1,0 festgelegt.

grün Die grüne Komponente des Farbobjekts, angegeben als Wert von 0,0 bis 1,0.

blau Die blaue Komponente des Farbobjekts, angegeben als Wert von 0,0 bis 1,0.

alpha Der Deckkraftwert des Farbobjekts, angegeben als Wert von 0,0 bis 1,0.

Reference here.

+1

Es funktioniert gut, jetzt fühle ich mich wie Idiot nach einem solchen Fehler! Vielen Dank! – x401om

5

UIColor verwendet einen Bereich von 0 bis 1,0 ist, keine ganzen Zahlen bis 255 .. Versuchen Sie folgendes:

// 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

Warum ist es so ?! –

3

Bitte versuchen Sie den Code

[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)]; 

wie

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

Die RGB-Komponenten von UIColor sind zwischen 0 und 1 skaliert, nicht jedoch bis zu 255.

24

Einer meiner Lieblings-Makros, kein Projekt ohne:

#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] 

Verwendung wie:

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

für schnelle bitte? –

+1

Hi @JaswanthKumar überprüfe meine Antwort für 'Swift' Version. –

2

Seit @Jaswanth Kumar gefragt, hier ist die Swift Version von 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) ) } }

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