Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone CGContext:如果更改笔划颜色,则更改整个视图颜色_Iphone_Objective C_Ios6 - Fatal编程技术网

Iphone CGContext:如果更改笔划颜色,则更改整个视图颜色

Iphone CGContext:如果更改笔划颜色,则更改整个视图颜色,iphone,objective-c,ios6,Iphone,Objective C,Ios6,我使用不同的按钮在使用CGContext的UIBezierPath曲线绘制中更改笔划颜色,但在更改颜色时,先前绘制的线条也会根据最后一个笔划颜色更改颜色。但我不希望先前绘制的线条更改颜色。 感谢您的帮助。 我使用了以下代码: (void)drawRect:(CGRect)rect{ if(colorwith==1){ CGContextRef bluecontext = UIGraphicsGetCurrentContext(); CGContextBeginPath(blue

我使用不同的按钮在使用CGContext的UIBezierPath曲线绘制中更改笔划颜色,但在更改颜色时,先前绘制的线条也会根据最后一个笔划颜色更改颜色。但我不希望先前绘制的线条更改颜色。 感谢您的帮助。 我使用了以下代码:

(void)drawRect:(CGRect)rect{

if(colorwith==1){
    CGContextRef bluecontext = UIGraphicsGetCurrentContext();
    CGContextBeginPath(bluecontext); // clears any previous path
    CGContextSetRGBFillColor(bluecontext, 0.2, 0.3, 0.5, .06);

    CGContextSetStrokeColorWithColor(bluecontext, [UIColor blueColor].CGColor);
    CGContextStrokePath(bluecontext); // draw blue line


for(UIBezierPath *_tempPath in _arrayForOperationPath)
{
  [_tempPath strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];      
}
    //[[UIColor blackColor]setStroke];
}
else if (colorwith==2){

    CGContextRef bluecontextt = UIGraphicsGetCurrentContext();
    CGContextBeginPath(bluecontextt); // clears any previous path
    CGContextSetRGBFillColor(bluecontextt, 0.2, 0.8, 0.7, .01);

    CGContextSetStrokeColorWithColor(bluecontextt, [UIColor redColor].CGColor);
    CGContextStrokePath(bluecontextt); 
          // [[UIColor redColor]setStroke];


for(UIBezierPath *_tempPath in _arrayForOperationPath)
{
  [_tempPath strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];      
}
    //[[UIColor blackColor]setStroke];
}

}

CGContextRef bluecontext=UIGraphicsGetCurrentContext()之后添加
CGContextSaveGState(bluecontext)
CGContextRestoreGState(bluecontext)绘制贝塞尔路径后

你的问题是每次上下文更新时都会调用drawRect…所以每次你绘制一些东西时。您在这里设置了线颜色,但是之前绘制的路径不记得RGB..只记得alpha(如果我记得正确的话)

使用
CGContextSaveGState
CGContextRestoreGState
保存上一个上下文,绘制,然后恢复上下文原样加上已绘制的图形