2011-01-22 6 views
0

Я хочу показать круговую диаграмму моей категории в процентах.Как создать круговую диаграмму в iPhone?

Как создать круговую диаграмму категории процент?

+0

вы можете обратиться мой ответ http://stackoverflow.com/ вопросы/13231244/draw-pie-chart-using-ios-quartz-2d/30004287 # 30004287, который включает только одну строку кода для рисования круговой диаграммы – iYoung

ответ

3

Существует API, благодаря которому вы можете сделать это.

  1. MIMChart
  2. CorePlot Эффективное, но не удобная библиотека.
4

Вы должны реализовать класс, который переопределяет метод drawRect: и нарисовать пирог самостоятельно. Вы должны использовать класс UIBezierPath, в частности, посмотрите на метод addArcWithCenter:radius:startAngle:endAngle:clockwise:, чтобы нарисовать часть круга.

См. Также this article и this article.

1

Это может быть полезно при предупреждении, что если это похоже на чужой код, это потому, что я разработал, как это сделать с веб-сайтами, и дополнительное предупреждение, которое я сделал это вскоре после запуска iPhone. Люди, которые хотят сказать мне, какие биты неэффективны или неправильны, приветствуются, я все еще участвую.

static inline float radians(double degrees) { return degrees * M_PI/180; } 

// making a simple pac man shape 
- (UIImage*)getImage { 

    UIImage* image; 
    if(self.completion == 100.0f) { 
     image = [UIImage imageNamed:@"completedTaskIcon.png"]; 
    } else { 
     UIGraphicsBeginImageContext(CGSizeMake(SIDELENGTH, SIDELENGTH)); 

     CGContextRef context = UIGraphicsGetCurrentContext(); 

     // the image should have a clear background 
     [[UIColor clearColor] set]; 
     CGRect myRect = CGRectMake(0.0f, 0.0f, SIDELENGTH, SIDELENGTH); 
     UIRectFill(myRect); 

     // color was hopefully set before this method called 
     [self.color set]; 

     // centre point is required 
     CGFloat midx = SIDELENGTH/2; 
     CGFloat midy = SIDELENGTH/2; 
     // radius of the arc 
     CGFloat radius = (SIDELENGTH/2) * 0.60f; 

     // pie background 
     CGContextSetFillColor(context, CGColorGetComponents([[UIColor orangeColor] CGColor])); 
     CGContextBeginPath(context); 
     CGContextMoveToPoint(context, midx + radius, midy); 
     CGContextAddArc(context, midx, midy, radius, radians(0), radians(360), 0); 
     CGContextFillPath(context); 

     // pie segment 
     CGContextSetFillColor(context, CGColorGetComponents([[UIColor blueColor] CGColor])); 
     CGContextBeginPath(context); 
     CGContextMoveToPoint(context, midx, midy); 
     CGContextAddLineToPoint(context, midx + radius, midy); 
     CGContextAddArc(context, midx, midy, radius, radians(0), radians(360 * (self.completion/100.0f)), 0); 
     CGContextFillPath(context); 
     image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
    } 

    return image; 
} 
0

Помимо предлагаемой библиотеки в других ответах, есть два действительно хороших класса круговых диаграмм с открытым исходным кодом, которые я использовал. Они выглядят очень красиво, очень просто, посмотрите на них в GitHub:

Смежные вопросы