将曲线添加到条形图

时间:2015-07-03 10:57:25

标签: ios objective-c uibezierpath

我试图像这样what I need

做图表

但我唯一得到的就是

what I got

我正在尝试bezier路径,但它不会像我需要的那样工作,只是不知道该怎么做

bezier的代码

    UIBezierPath *path = [UIBezierPath bezierPath];
[path setLineWidth:3.0];
[path setLineCapStyle:kCGLineCapRound];
[path setLineJoinStyle:kCGLineJoinRound];

NSValue *value = [newPoints objectAtIndex:0];
CGPoint p1 = [value CGPointValue];
[path moveToPoint:CGPointMake(0, viewHeight/2)];

for (int k=1; k<[newPoints count];k++) {

    NSValue *value = [newPoints objectAtIndex:k];
    CGPoint p2 = [value CGPointValue];

    CGPoint centerPoint = CGPointMake((p1.x+p2.x)/2, (p1.y+p2.y)/2);

    if (p1.y<p2.y) {
        centerPoint = CGPointMake(centerPoint.x, centerPoint.y+(fabs(p2.y-centerPoint.y)));
    }else if(p1.y>p2.y){
        centerPoint = CGPointMake(centerPoint.x, centerPoint.y-(fabs(p2.y-centerPoint.y)));
    }

    [path addQuadCurveToPoint:p2 controlPoint:centerPoint];
    p1 = p2;
}

[path stroke];

接近结果,但不一样 我只使用图表的顶点,而不是全部

此代码的当前结果

enter image description here

或者我怎么能使用面具只取贝塞尔线和中心绿线之间的东西?然后我将条形高度设置为全部视图,并且线条将像我需要的那样切割它们

1 个答案:

答案 0 :(得分:1)

您可以尝试使用UIBezierPath,只需先使用

[urPath moveToPoint:firstPOint];
loop 
 [urPath addLineToPoint:topOfEveryBar];