2012-02-18 10 views
6

En el generador de interfaz cambié el color de un UILabel a esta captura de pantalla, teniendo Rojo 255, Verde 159, Azul 0 y Opacidad al 100%. que da un color naranja.iOS SDK Interfaz Slider RGB del generador que produce un color diferente a UIColor con RGB

IB RGB Sliders Color Produced in Center

mediante programación cambiar el color UILabel que cambie de nuevo al color original utilizando este ...

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

y le da este color .... UIColor color

Pensé que debería ser igual, ¿alguien sabe lo que estoy haciendo mal? por favor ayuda, gracias.

Respuesta

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

muchas gracias. cuando pueda, aceptaré esta respuesta. – OscarTheGrouch

+1

Quizás podría agregar un poco de explicación, en lugar de solo un ejemplo de código sin formato – jrturton

+0

UIColor solo toma propiedades de 0 a 1 – OscarTheGrouch

7

EDIT: Dos años más tarde, este post aún así obtener algún karma y comentarios. Se corrigió mi respuesta anterior a una mejor.

La forma más sensible y reutilizable de agregar una función que puede tomar una entrada entre 0 y 255 para UIColor, es crear una categoría personalizada. Más fácil de leer, más fácil de depurar, más fácil para que otras personas contribuyan, y mantiene el proyecto limpio y estructurado a medida que crece más allá de solo ver controladores de vista. Por lo tanto, añadir los siguientes archivos, e importarlos en sus archivos-m dondequiera que los necesite

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

Gracias por las macros y aconsejar dónde colocarlas :). Estas macros harán que el código sea mucho más fácil de leer y tomar los colores RGB creados en otros programas. –

+0

Me gustaría advertir el uso de macros en general, ya que una extensión de clase o un método local es mucho más seguro. Usar el .pch para esto es horrible y te voy a dar un -1 por ello. El .pch es un dispositivo para acelerar la compilación al permitir que el compilador optimice el análisis de los encabezados comunes. Usarlo como una forma de propagar macros que pueden o no ser necesarios es innecesario en proyectos pequeños y una abominación en cualquier otra cosa.(despotricar) –

+0

Comentario válido, @GordonDove, y no fue visto en absoluto como una diatriba. En febrero de 12, probablemente agregaría esta respuesta como macro al archivo pch, pero hoy, por fortuna, lo sé mejor, muchas gracias a algunos de los comentarios y respuestas perspicaces de SO. Como esta respuesta todavía me sigue dando SO-karma, probablemente debería agregar una mejor y más refinada ... –

0

ajuste de tratar de "Device RGB" - Esto funcionó para mí

enter image description here