2012-04-24 15 views
10

Quiero crear UIColor a partir del valor HEX. Pero mi color es un NSString. Así que implementar esta solución: How can I create a UIColor from a hex string?Valor HEX en Objective-C

código:

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

y luego tengo (simplificar):

NSString *myString = [[NSString alloc] initWithString:@"0xFFFFFF"]; 

así que cuando quiero llamar a la macro:

UIColor *myColor = UIColorFromRGB(myString); 

Recibo un error: invalid operands to binary expression ('NSString *' and 'int')

Entonces sé que tengo que pasar int, pero ¿cómo convertir NSString a int en este caso? Por supuesto [myString intValue]; no funciona aquí.

Respuesta

17

Puede utilizar la macro directamente con números enteros hexagonales así:

UIColorFromRGB(0xff4433) 

O puede analizar el hex-string en un entero de esta manera:

unsigned colorInt = 0; 
[[NSScanner scannerWithString:hexString] scanHexInt:&colorInt]; 
UIColorFromRGB(colorInt) 
+0

funciona muy bien! ¡Gracias! – Kuba

5

No puede hacer eso como estándar, pero consulte mi category on UIColor que tiene un método para hacerlo.

Su macro que ha definido espera que sea un entero empaquetado en formato RGB. Estás pasando una cuerda, por lo que no está funcionando.