Solución:
El motivo del accidente al acceder SelectedColor.CGColor
podría ser que no retienes el resultado de getColor
, quizás lo que necesitas es:
SelectedColor = [[(ColorPickerView *)alertView getColor] retain];
Solo puede obtener el componente de color RGB de un UIColor
que está usando el espacio de color RGB, ya que está usando colorWithRed:green:blue:alpha:
eso no es un problema, pero puede variar de esto si su código cambia.
Con esto en mente, obtener los componentes de color es realmente fácil:
const CGFloat* components = CGColorGetComponents(SelectedColor.CGColor);
NSLog(@"Red: %f", components[0]);
NSLog(@"Green: %f", components[1]);
NSLog(@"Blue: %f", components[2]);
NSLog(@"Alpha: %f", CGColorGetAlpha(SelectedColor.CGColor));
Esta solución funciona también para colores que no son RGB, por ejemplo, color blanco o negro.
UIColor *color = [UIColor blackColor];
CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0;
// iOS 5
if ([color respondsToSelector:@selector(getRed:green:blue:alpha:)]) {
[color getRed:&red green:&green blue:&blue alpha:&alpha];
} else {
// < iOS 5
const CGFloat *components = CGColorGetComponents(color.CGColor);
red = components[0];
green = components[1];
blue = components[2];
alpha = components[3];
}
// This is a non-RGB color
if(CGColorGetNumberOfComponents(color.CGColor) == 2) {
CGFloat hue;
CGFloat saturation;
CGFloat brightness;
[color getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha];
}
En la mayoría de los casos, esto funcionará, a menos que la conversión a RGB no funcione.
float red, green, blue, alpha;
BOOL conversionToRGBWentOk = [color getRed:&red green:&green blue:&blue alpha:&alpha];
De hecho, para eso sirven estos métodos. Si el conversionToRGBWentOk
es NO
sin embargo, tendrás un problema.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)