Tengo dos instancias de UIColor y quiero usarlas para crear un degradado. El código funciona, pero me da una advertencia cuando llamo al arrayWithObject:
constructor:Cómo uso cómodamente CGColor en un NSArray con CGGradient
advertencia: cuestión semántica: incompatibles tipos de puntero que envían 'CGColorRef' (también conocido como 'struct CGColor *') al parámetro de tipo 'id'
Sospecho que hay otros problemas relacionados con la advertencia (fugas, por ejemplo). Aquí está el fragmento:
UIColor *startColor, *endColor;
// ...
NSArray *colors = [NSArray arrayWithObjects:
startColor.CGColor, endColor.CGColor, nil];
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace,
(CFArrayRef) colors, NULL);
¿Cómo puedo volver a escribir el código para deshacerse de esta advertencia de una manera segura?
- Intenté crear un CGArrayRef manualmente, pero eso se volvió un poco desagradable después de un tiempo.
- CGGradientCreateWithColorComponents obras, pero no me gusta tener que combinar manualmente todos los componentes de color en un
CGFloat components[]
¿Se puede hacer uso de 'CAGradientLayer * gradiente = [capa CAGradientLayer] ; gradient.frame = view.bounds; gradient.colors = [NSArray arrayWithObjects: (id) [[UIColor blackColor] CGColor], (id) [[UIColor whiteColor] CGColor], nil]; ' – visakh7
@ 7KV7, no lo creo. Lo uso en drawRect para crear mi forma completa (que es un polígono no rectangular por cierto). –
También UIColor * startColor, endColor; debería ser UIColor * startColor, * endColor; – visakh7