admin 管理员组文章数量: 887006
iOS 画饼状图
画饼状图其实就是画扇形,比如我们需要实现下面这个效果
画图思路:
1、根据数据源的个数来判断需要画多少个扇形(比如:25,15,30,10,20,说明我们要画5个扇形)
2、根据数据源判断每组数据占一个圆的多少(比如,startA:0,angle:25/100.0 *M_PI *2,endA:startA+angle)
3、下一个扇形的大小起点就是上一个扇形的结束点(比如,startA:end,angle:15/100.0 *M_PI *2,endA:startA+angle)
4、以此类推。。。
@interface PieChartView:UIView
@end@implementation PieChartView- (void)drawRect:(CGRect)rect{//数据源NSArray *numberArray = @[@25,@15,@30,@10,@20];NSArray *colorArray = @[[UIColor redColor],[UIColor yellowColor],[UIColor purpleColor],[UIColor greenColor],[UIColor orangeColor]];//半径CGFloat radius = rect.size.width / 2;//中心点CGPoint center = CGPointMake(radius, radius);//起始角度CGFloat startA = 0;//弧度CGFloat angle = 0;//结束角度CGFloat endA = 0;for (int i = 0; i < numberArray.count; i ++) {startA = endA;angle = [numberArray[i] floatValue] / 100.0 * M_PI * 2;endA = startA + angle;[self pieChartWithCenter:center withRadius:radius withStartAngle:startA withEndAngle:endA withColor:colorArray[i]];}}-(void)pieChartWithCenter:(CGPoint)center withRadius:(CGFloat)radius withStartAngle:(CGFloat)startA withEndAngle:(CGFloat)endA withColor:(UIColor*)color{//画弧UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];//添加一根线到圆心[path addLineToPoint:center];//设置颜色(描边和填充通用)[color setFill];[path fill];
}@end
最后,附上相关的demo,Git:()
本文标签: iOS 画饼状图
版权声明:本文标题:iOS 画饼状图 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732357250h1534786.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论