2014-09-30 96 views
0

okie我使用的是餅圖我從GitHub Astrokin Piechart在pieChart drawRect方法中繪製文本?

但在這個餅圖標籤有沒有被添加到不同的片,我想要的東西,如下圖所示 Pie chart view

我已經看過了對計算器已經和我試圖繪製直接繪製文本,但似乎沒有工作。代碼如下

for (int i = 0; i < slicesCount; i++) 
    { 


double value = [self.datasource pieChartView:self valueForSliceAtIndex:i]; 

    NSString *title = [self.datasource pieChartView:self titleForSliceAtIndex:i]; 

    endAngle = startAngle + M_PI*2*value/sum; 

    /*CGFloat x = centerX + (radius+10) * (cos((startAngle-90)*M_PI/180.0) + cos((endAngle-90)*M_PI/180.0))/2; 
    CGFloat y = centerY + (radius+10) * (sin((startAngle-90)*M_PI/180.0) + sin((endAngle-90)*M_PI/180.0))/2; 

    [title drawAtPoint:CGPointMake(x, y) withFont:[UIFont fontWithName:FONT_HELVETICA size:12.0]];*/ 

    CGFloat x = centerX + ((radius + 10) * cos(startAngle)); 
    CGFloat y = centerY + ((radius + 10) * sin(endAngle)); 

    // NSLog(@"X Y: %f %f %f", x, y, degree); 

    NSString *text = @"Test"; 
    [text drawInRect:CGRectMake(x, y, 50, 44) withFont:[UIFont systemFontOfSize:14.0f]]; 

    CGContextAddArc(context, centerX, centerY, radius, startAngle, endAngle, false); 

    UIColor *drawColor = [self.datasource pieChartView:self colorForSliceAtIndex:i]; 

    CGContextSetStrokeColorWithColor(context, drawColor.CGColor); 
    CGContextSetLineWidth(context, lineWidth); 
    CGContextStrokePath(context); 
    startAngle += M_PI*2*value/sum; 

} 

現在它看起來像這樣

enter image description here

什麼我可能做錯了什麼?

+0

它在哪種方式不起作用?根本不畫?畫不好?舉一些例子。 – DeFrenZ 2014-09-30 09:13:28

+0

添加了目前看起來像的圖像 – hemant 2014-09-30 09:40:04

+0

看起來你的文本的左上角處於正確的位置,所以使用'[text drawInRect:CGRectMake(x - 25,y - 44,50,44)...'相反可能會工作。 – Aaganrmu 2014-09-30 10:01:57

回答

0

您與

[text drawInRect:CGRectMake(x, y, 50, 44) withFont:[UIFont systemFontOfSize:14.0f]]; 

,使你的文字的左上角出現在點(x,y)的繪製文本。正如我所看到的,您希望文本的中心出現在點(x,y)處。你需要做的是要減去一半的文本的寬度從X與同爲Y,使之成爲:

CGFloat height = 50.0; 
CGFloat width = 44.0; 
[text drawInRect:CGRectMake(x - width/2.0, y - height/2.0, width, height) withFont:[UIFont systemFontOfSize:14.0f]]; 

而且你需要動態獲取基於您的字符串文本的寬度, 「95%」比「5%」寬,是嗎?所以你需要這樣的東西:

UIFont *font = [UIFont systemFontOfSize:14.0f]; 
CGSize textSize = [text sizeWithFont:font]; // -sizeWithFont is deprecated in iOS7, you'll need something else 
CGFloat height = textSize.height; 
CGFloat width = textSize.width; 
[text drawInRect:CGRectMake(x - width/2.0, y - height/2.0, width, height) withFont:font];