2015-07-03 128 views
3

我一直试图做的图形像这样what I need添加曲线条形图

但我唯一有的只是

what I got

我试图贝塞尔路径,但它不会像工作我需要的,只是不知道该怎么办

代码贝塞尔

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

不然我怎么会用面膜只需要贝塞尔线与中心线之间的东西?然后我做吧高矮所有的观点和行会削减他们就像我需要

+0

你怎么说你试过贝塞尔但没有奏效?你是如何计算曲线的点和控制点的? – holex

+0

编辑我的帖子与答案 – pluck

回答

1

您可以通过UIBezierPath尝试,只是第一次使用

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

那么这将是完全错误的,我会得到只是直线,已经尝试 – pluck

+0

@ pluck我有点忙,但我给一个链接到雷文德里希后,让你知道,一个直线是不是它看起来像[链接](http://www.raywenderlich.com/90693/modern-core-graphics-with-swift-part-2)。在这篇文章中,折线图是 – Misha

+0

我的意思是我的点太接近对方,所以它会看起来像很多波 – pluck