2012-02-18 11 views
6

Nel builder dell'interfaccia ho cambiato il colore di un UILabel in questo screenshot, con Rosso 255, Verde 159, Blu 0 e Opacità al 100%. che dà un colore arancione.Dispositivo di scorrimento RGB di iOS SDK Interface Builder che produce colore diverso da UIColor con RGB

IB RGB Sliders Color Produced in Center

I programmazione cambiare il colore UILabel di cambiare di nuovo al colore originale di utilizzare questo ...

timeLabel.textColor = [UIColor colorWithRed:255.0 green:159.0 blue:0.0 alpha:1.0]; 

e dà questo colore .... UIColor color

Ho pensato che dovrebbe essere lo stesso, qualcuno sa cosa sto facendo male? per favore aiuto, grazie.

risposta

2
timeLabel.textColor = [UIColor colorWithRed:255/255.0f green:159.0/255.0f blue:0.0/255.0f alpha:1.0]; 
+0

grazie mille. quando sarò in grado accetterò questa risposta. – OscarTheGrouch

+1

È possibile aggiungere un po 'di spiegazione, piuttosto che un semplice esempio di codice non formattato – jrturton

+0

UIColor assume solo proprietà da 0 a 1 – OscarTheGrouch

7

EDIT: Due anni più tardi, questo post ancora ottenere un po 'di karma e commenti. Risolta la mia vecchia risposta a una migliore.

Il modo più sensato e riutilizzabile per aggiungere una funzione che può richiedere input tra 0 e 255 per UIColor, è creare una categoria personalizzata. Più facile da leggere, più facile da eseguire il debug, più facile per le altre persone, e mantiene il progetto pulito e strutturato man mano che cresce oltre a una vista viewcontrollers. Quindi, aggiungere i seguenti file, e importarli nel vostro M-file dovunque ne avete bisogno

UIColor + Extra.h

@interface UIColor (Extra) 
+ (UIColor *)colorWithR:(uint)red G:(uint)green B:(uint)blue A:(uint) alpha 
+ (UIColor *) randomColor; 
+ (UIColor *) colorWithHex:(uint) hex; 
@end 

UIColor + Extra.m

#import "UIColor+Extra.h" 

@implementation UIColor (Extra) 

+ (UIColor *)colorWithR:(uint)red G:(uint)green B:(uint)blue A:(uint) alpha 
{ 
    return [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/100.f]; 
} 

+ (UIColor *) randomColor 
{ 
    CGFloat red = (CGFloat)random()/(CGFloat)RAND_MAX; 
    CGFloat blue = (CGFloat)random()/(CGFloat)RAND_MAX; 
    CGFloat green = (CGFloat)random()/(CGFloat)RAND_MAX; 
    return [UIColor colorWithRed:red green:green blue:blue alpha:1.0]; 
} 
+ (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 
+0

Grazie per i macro e consigliando dove posizionarli :). Queste macro rendono il codice molto più facile da leggere e accettano i colori RGB creati in altri programmi. –

+0

Farei attenzione all'uso di macro in generale, in quanto un'estensione di classe o un metodo locale è molto più sicuro. Usare la .pch per questo è orrendo e ti darò un -1 per questo. Il .pch è un dispositivo per accelerare la compilazione consentendo al compilatore di ottimizzare l'analisi delle intestazioni comuni. Usarlo come un modo per propagare macro che possono o non possono essere necessarie non è necessario in piccoli progetti e un abominio in qualcos'altro.(sbraitare) –

+0

Commento valido, @GordonDove, e non è stato affatto visto come un rant. Nel febbraio del 12, probabilmente aggiungerei questa risposta come una macro al file pch, ma oggi, per fortuna, lo so meglio, grazie molto ad alcuni dei commenti e delle risposte perspicaci di SO. Poiché questa risposta continua a darmi SO-karma, dovrei probabilmente aggiungerne una migliore e più raffinata ... –

0

impostazione cercare di "dispositivo RGB" - Questo ha lavorato per me

enter image description here