Как создать круговую диаграмму в iPhone?

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

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


person Community    schedule 22.01.2011    source источник
comment
вы можете сослаться на мой ответ stackoverflow.com/questions/13231244/, который включает всего одну строку кода для рисования круговой диаграммы   -  person iYoung    schedule 02.05.2015


Ответы (4)


Есть API, с помощью которого вы можете это сделать.

  1. MIMChart
  2. CorePlot Эффективная, но неудобная библиотека.
person Rama Rao    schedule 17.02.2012

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

См. также эту статью и эту статью.

person DarkDust    schedule 22.01.2011

Это может быть полезно с предупреждением о том, что если это выглядит как чей-то чужой код, это потому, что я разработал, как это сделать с веб-сайтами, и дополнительным предупреждением о том, что я сделал это вскоре после запуска 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;
}
person Adam Eberbach    schedule 22.01.2011

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

person Natan R.    schedule 20.08.2012