¿Cómo convierto un UIColor a una cadena hexadecimal?

Tengo un proyecto donde necesito almacenar los valores de RGBA de un UIColor en una database como una cadena hexadecimal de 8 caracteres. Por ejemplo, [UIColor blueColor] sería @ "0000FFFF". Sé que puedo get los valores de los componentes así:

CGFloat r,g,b,a; [color getRed:&r green:&g blue: &b alpha: &a]; 

pero no sé cómo pasar de esos valores a la cadena hexadecimal. He visto muchas publicaciones sobre cómo ir para otro lado, pero nada funcional para esta conversión.

Obtenga primero sus flotadores convertidos en valores int, luego formatee con stringWithFormat :

  int r,g,b,a; r = (int)(255.0 * rFloat); g = (int)(255.0 * gFloat); b = (int)(255.0 * bFloat); a = (int)(255.0 * aFloat); [NSString stringWithFormat:@"%02x%02x%02x%02x", r, g, b, a]; 

Aquí va. Devuelve un NSString (por ejemplo, ffa5678 ) con un valor hexadecimal del color.

 - (NSString *)hexStringFromColor:(UIColor *)color { const CGFloat *components = CGColorGetComponents(color.CGColor); CGFloat r = components[0]; CGFloat g = components[1]; CGFloat b = components[2]; return [NSString stringWithFormat:@"%02lX%02lX%02lX", lroundf(r * 255), lroundf(g * 255), lroundf(b * 255)]; }