Ios CGContextStrokePath图形的额外行错误

Ios CGContextStrokePath图形的额外行错误,ios,iphone,objective-c,core-graphics,Ios,Iphone,Objective C,Core Graphics,我不熟悉在iOS上绘制条形图和线条,目前我对CGContextStrokePath有一个问题,问题在下面的图片上,我如何解决它,有什么想法吗 我将图形分为3部分: 波顿条码: CGContextRef context4 = UIGraphicsGetCurrentContext(); CGContextSetStrokeColorWithColor(context4, [UIColor colorWithRed:(204.0f/255.0f) green:(0.0f/25

我不熟悉在iOS上绘制条形图和线条,目前我对CGContextStrokePath有一个问题,问题在下面的图片上,我如何解决它,有什么想法吗

我将图形分为3部分:

波顿条码:

CGContextRef context4 = UIGraphicsGetCurrentContext();
            CGContextSetStrokeColorWithColor(context4, [UIColor colorWithRed:(204.0f/255.0f) green:(0.0f/255.0f) blue:(102.0f/255.0f) alpha:1].CGColor);

            //[UIColor colorWithRed:(0/255.0) green:(158/255.0) blue:(229/255.0) alpha:1]
            //[UIColor colorWithRed:(0/255.0) green:(158/255.0) blue:(229/255.0) alpha:1]
            CGContextSetRGBFillColor(context4, 204.0f/255.0f, 0.0f/255.0f, 102.0f/255.0f, 1.0);

            CGMutablePathRef pathRef = CGPathCreateMutable();
            CGPathMoveToPoint(pathRef, NULL, coor, 75);
            CGPathAddLineToPoint(pathRef, NULL, coor, -demoData2[i]*coefficient+75);
            CGPathAddLineToPoint(pathRef, NULL, coor+22, -demoData2[i]*coefficient+75); //aqui aumenta a barra
            CGPathAddLineToPoint(pathRef, NULL, coor+22, 75); //aqui aumenta a barra
            CGPathCloseSubpath(pathRef);
            CGContextAddPath(context4, pathRef);
            CGContextFillPath(context4);
            CGContextAddPath(context4, pathRef);
            //CGContextStrokePath(context);
           CGContextSetShadow(context4,CGSizeMake(2, 2) , 2);

            CGPathRelease(pathRef);
 CGContextRef context3 = UIGraphicsGetCurrentContext();

            CGContextSetStrokeColorWithColor(context3, [UIColor colorWithRed:(231.0f/255.0f) green:(174.0f/255.0f) blue:(39.0f/255.0f) alpha:1].CGColor);

            //[UIColor colorWithRed:(0/255.0) green:(158/255.0) blue:(229/255.0) alpha:1]
            //[UIColor colorWithRed:(0/255.0) green:(158/255.0) blue:(229/255.0) alpha:1]
            CGContextSetRGBFillColor(context3, 231.0f/255.0f, 174.0f/255.0f, 39.0f/255.0f, 1.0);

            CGContextSetShadow(context3,CGSizeMake(2, 2) , 2);
            CGMutablePathRef pathRef = CGPathCreateMutable();
            CGPathMoveToPoint(pathRef, NULL, coor, 75);
            CGPathAddLineToPoint(pathRef, NULL, coor, -demoData[i]*coefficient+75);
            CGPathAddLineToPoint(pathRef, NULL, coor+22, -demoData[i]*coefficient+75); //aqui aumenta a barra
            CGPathAddLineToPoint(pathRef, NULL, coor+22, 75); //aqui aumenta a barra
            CGPathCloseSubpath(pathRef);
            CGContextAddPath(context3, pathRef);
            CGContextFillPath(context3);
            CGContextAddPath(context3, pathRef);
            //CGContextStrokePath(context);


            CGPathRelease(pathRef);
顶部条码:

CGContextRef context4 = UIGraphicsGetCurrentContext();
            CGContextSetStrokeColorWithColor(context4, [UIColor colorWithRed:(204.0f/255.0f) green:(0.0f/255.0f) blue:(102.0f/255.0f) alpha:1].CGColor);

            //[UIColor colorWithRed:(0/255.0) green:(158/255.0) blue:(229/255.0) alpha:1]
            //[UIColor colorWithRed:(0/255.0) green:(158/255.0) blue:(229/255.0) alpha:1]
            CGContextSetRGBFillColor(context4, 204.0f/255.0f, 0.0f/255.0f, 102.0f/255.0f, 1.0);

            CGMutablePathRef pathRef = CGPathCreateMutable();
            CGPathMoveToPoint(pathRef, NULL, coor, 75);
            CGPathAddLineToPoint(pathRef, NULL, coor, -demoData2[i]*coefficient+75);
            CGPathAddLineToPoint(pathRef, NULL, coor+22, -demoData2[i]*coefficient+75); //aqui aumenta a barra
            CGPathAddLineToPoint(pathRef, NULL, coor+22, 75); //aqui aumenta a barra
            CGPathCloseSubpath(pathRef);
            CGContextAddPath(context4, pathRef);
            CGContextFillPath(context4);
            CGContextAddPath(context4, pathRef);
            //CGContextStrokePath(context);
           CGContextSetShadow(context4,CGSizeMake(2, 2) , 2);

            CGPathRelease(pathRef);
 CGContextRef context3 = UIGraphicsGetCurrentContext();

            CGContextSetStrokeColorWithColor(context3, [UIColor colorWithRed:(231.0f/255.0f) green:(174.0f/255.0f) blue:(39.0f/255.0f) alpha:1].CGColor);

            //[UIColor colorWithRed:(0/255.0) green:(158/255.0) blue:(229/255.0) alpha:1]
            //[UIColor colorWithRed:(0/255.0) green:(158/255.0) blue:(229/255.0) alpha:1]
            CGContextSetRGBFillColor(context3, 231.0f/255.0f, 174.0f/255.0f, 39.0f/255.0f, 1.0);

            CGContextSetShadow(context3,CGSizeMake(2, 2) , 2);
            CGMutablePathRef pathRef = CGPathCreateMutable();
            CGPathMoveToPoint(pathRef, NULL, coor, 75);
            CGPathAddLineToPoint(pathRef, NULL, coor, -demoData[i]*coefficient+75);
            CGPathAddLineToPoint(pathRef, NULL, coor+22, -demoData[i]*coefficient+75); //aqui aumenta a barra
            CGPathAddLineToPoint(pathRef, NULL, coor+22, 75); //aqui aumenta a barra
            CGPathCloseSubpath(pathRef);
            CGContextAddPath(context3, pathRef);
            CGContextFillPath(context3);
            CGContextAddPath(context3, pathRef);
            //CGContextStrokePath(context);


            CGPathRelease(pathRef);
线形图:

    CGMutablePathRef spadePath = CGPathCreateMutable();
CGPathMoveToPoint(spadePath, NULL, nextX, downToXline - demoData[0]*coefficient);

CGContextRef context5 = UIGraphicsGetCurrentContext();
for (int i = 1; i < [_lineGraph count]; i++) {
    CGPathAddCurveToPoint(spadePath, NULL, nextX+bizieLineAligm, corectPointer1, nextX+distanceNextYline-bizieLineAligm, downToXline - demoData[i]*coefficient, nextX+distanceNextYline, downToXline - demoData[i]*coefficient);
    //            NSLog(@"POint %d: %f , %f %f %f %f %f",i,nextX+bizieLineAligm, corectPointer1, nextX+distanceNextYline-bizieLineAligm, downToXline - demoData[i], nextX+distanceNextYline, downToXline - demoData[i]);
    nextX +=distanceNextYline;
    corectPointer1 = downToXline - demoData[i]*coefficient;
}
[[UIColor colorWithRed:115.0/255.0f green:171.0f/255.0f blue:40.0f/255.0f alpha:1.0f] set];
CGContextSetLineWidth(context5, 2);
CGContextAddPath(context5, spadePath);

CGContextStrokePath(context5);
CGMutablePathRef spadePath=CGPathCreateMutable();
CGPathMoveToPoint(spadePath、NULL、nextX、下行-解调数据[0]*系数);
CGContextRef context5=UIGraphicsGetCurrentContext();
对于(int i=1;i<[u线图计数];i++){
CGPathAddCurveToPoint(spadePath,NULL,nextX+bizieLineAligm,corectPointer1,nextX+distanceNextYline bizieLineAligm,downToXline-demoData[i]*系数,nextX+distanceNextYline,downToXline-demoData[i]*系数);
//NSLog(@“点%d:%f,%f%f%f%f”,i,nextX+bizieLineAligm,corectPointer1,nextX+distance nextyline bizieLineAligm,downToXline-demoData[i],nextX+distance nextyline,downToXline-demoData[i]);
nextX+=距离NEXTYLINE;
corectPointer1=下行-解调数据[i]*系数;
}
[[UIColor COLOR WITH RED:115.0/255.0f绿色:171.0f/255.0f蓝色:40.0f/255.0f阿尔法:1.0f]组];
CGContextSetLineWidth(context5,2);
CGContextAddPath(context5,spadePath);
CGContextStrokePath(context5);

编辑:在最后一个栏上,绿线图形不得与底部栏混合,顶部栏的颜色不得与底部栏的颜色相同:)

您能描述一下它应该是什么样子吗?好的,刚刚编辑了问题:)为什么要添加路径,填充路径,然后再次添加路径?第二次添加它有什么作用?我是新来的,你是说我不需要添加它?