2015-07-03 129 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