Pregunta

Tengo una vista UIVIE personalizada que dibuja un camino así

- (void)drawRect:(CGRect)rect{

    [[UIColor blackColor] setStroke];
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSetFillColor(ctx, CGColorGetComponents(self.color));

    CGContextFillPath(ctx);

    UIBezierPath *thePath = [UIBezierPath bezierPath];
    thePath.lineWidth = _lineWidth;

    _center = CGPointMake(rect.size.width, rect.size.height);

    [thePath moveToPoint:_center];

    [thePath addArcWithCenter:_center radius:rect.size.width startAngle:M_PI endAngle:M_PI+degreesToRadians(_angle)clockwise:YES];

    [thePath closePath];
    [thePath fill];

}

My Custom UIView también tiene un método para cambiar el color de llenado

- (void) changeColor:(UIColor *) newColor {

    self.color = [newColor CGColor];
    [self setNeedsDisplay];

}

Si llamo al método ChangeColor: con alguno de los colores predefinidos, como

 [UIColor redColor]  

todo funciona bien.En su lugar, si trato de darle un color personalizado, como

 UIColor* color = [UIColor colorWithRed:1.0f green:0.0f blue:0.0f alpha:1.0f];

El color de mi parpadeo de UIView personalizado entre blanco, rojo y azul al azar.

¿Alguna idea de por qué es eso?

¡Gracias de antemano!

¿Fue útil?

Solución

intento:

CGContextSetFillColorWithColor(ctx, self.color.CGColor);

en lugar de:

CGContextSetFillColor(ctx, CGColorGetComponents(self.color));

Otros consejos

Cuando está utilizando este método, llamada:

[UIColor redColor];

Para fines de optimización, Uicolor devuelve un objeto con solo 2 componentes porque no necesita el otro.(Esto es posible con el mecanismo de agrupamiento de clase).

Es posible que su código muestre algunas diferencias entre estos dos colores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top