我有一个非常简单的方法来设置r,g和b颜色。它是以下内容:
-(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和o(不透明度)是uiview的自定义子类中的float属性。我使用draw rect,如下所示:
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), r, b, g, o);
当我调用方法时,我这样做:
[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
这样可以正常工作并返回我绘制的红色。
不幸的是,每当我调用其他任何东西时,它都不会返回所需的颜色,即使它正在记录正确的颜色。例如,
[self.drawingBox colorWithRed:255.0/255.0 green:149.0/255.0 blue:0.0/255.0];
当它实际上应该是橙色时返回紫色。当它被nslogged时,这就是橙色的日志:
R: 1.000000, G: 0.584314, B: 0.000000
为什么第二次返回紫色而不是橙色(nslog是正确的颜色)的任何想法?
答案 0 :(得分:1)
您正以错误的顺序将参数传递给CGContextSetRGBStrokeColor
。试试这个:
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), r, g, b, o);