Question

I have a very simple method that sets an r,g, and b color. It is the following:

-(void)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue{
    r = red;
    g = green;
    b = blue;

    NSLog(@"R: %f, G: %f, B: %f",r,g,b);
}

r,g,b, and o (opacity) are float properties in my custom subclass of uiview. I utilize draw rect like the following:

CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), r, b, g, o);

When I call the method I do it like this:

[self.drawingBox colorWithRed:255.0/255.0 green:59.0/255.0 blue:48.0/255.0];
NSLOG: R: 1.000000, G: 0.231373, B: 0.188235

This works correctly and returns a red color with which I draw.

Unfortunately, whenever I call anything else, it doesn't return the desired color even though it's nslogging the correct color. For example,

[self.drawingBox colorWithRed:255.0/255.0 green:149.0/255.0 blue:0.0/255.0];

Returns a purple color when it should actually be orange. When it gets nslogged, this is what logs for the orange color:

R: 1.000000, G: 0.584314, B: 0.000000

Any ideas on why the second time it returns purple instead of orange (the nslog is the correct color)?

Was it helpful?

Solution

You are passing the parameters to CGContextSetRGBStrokeColor in the wrong order. Try this:

CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), r, g, b, o);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top