// 主要显示图层 声明
@property(strong,nonatomic)PieChartView * ZSJ_IntegralPlate_View;
// 创建图层的大小 创建
_ZSJ_IntegralPlate_View = [[PieChartViewalloc]initWithFrame:CGRectMake(0,64, self.view.frame.size.width,self.view.frame.size.height)];
_ZSJ_IntegralPlate_View.backgroundColor = [[UIColorwhiteColor] colorWithAlphaComponent:1];
[self.viewaddSubview:_ZSJ_IntegralPlate_View];
// 数据加入
_parties = @[
@"IOS开发者",@"Android开发者",@"测试人员",@"PHP开发者",@"硬件开发者"
];
3、进行主角的出场准备
// 主角的绘制
[selfsetupPieChartView:_ZSJ_IntegralPlate_View];
// 设置其代理
_ZSJ_IntegralPlate_View.delegate =self;
// 进行加载(代理,可以知道你点击了哪一个模块)
[selfsetDataCount:(5)range:2];
// 使用动画加载
[_ZSJ_IntegralPlate_ViewanimateWithXAxisDuration:1.4 easingOption:ChartEasingOptionEaseOutBack];
4、本篇博客,最重要的代码。
1.绘制前的设置 (注释:这里不再解释,代码里面已经注释很详细)
// usePercentValuesEnabled 为YES的时候,绘制出来的数据百分比和原始数据不同,即是 20%和0.2% 的区别
chartView.usePercentValuesEnabled =YES;
//设置在图形的中心孔的透明与否 NO为透明
chartView.holeTransparent = YES;
//设置各个扇形的且角度
chartView.holeRadiusPercent = 0.58;
//切一个百分比的圆环
chartView.transparentCircleRadiusPercent =0.61;
//设置传递信息数据(主要是描述信息)
chartView.descriptionText = @"";
//设值整个主角位置偏移
[chartView setExtraOffsetsWithLeft:5.ftop:10.fright:5.fbottom:5.f];
//是否允许中心是否绘字(即是:中心圆孔上的字) YES绘制,否者,不绘制
chartView.drawCenterTextEnabled =YES;
//图形里面的字体显示的形似(例如:如果文字太长 123...或者 ...123)
NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle]mutableCopy];
paragraphStyle.lineBreakMode =NSLineBreakByTruncatingTail;
paragraphStyle.alignment = NSTextAlignmentCenter;
// 字符串属性设置
NSMutableAttributedString *centerText = [[NSMutableAttributedStringalloc] initWithString:@"成功QQ吧-训练营\n ---周双建\n欢迎您的加入"];
[centerText setAttributes:@{
NSFontAttributeName: [UIFontfontWithName:@"HelveticaNeue- Light"size:20.f],
NSParagraphStyleAttributeName: paragraphStyle
} range:NSMakeRange(0, centerText.length)];
[centerText addAttributes:@{
NSFontAttributeName: [UIFontfontWithName:@"HelveticaNeue- LightItalic"size:20.f],
NSForegroundColorAttributeName: [UIColor colorWithRed:51/255.fgreen:181/255.fblue:229/255.falpha:1.f]
} range:NSMakeRange(0, centerText.length)];
chartView.centerAttributedText = centerText;
chartView.drawHoleEnabled = YES;
// 开始角度
chartView.rotationAngle = 0.0;
// 允许旋转
chartView.rotationEnabled = YES;
// 高亮
chartView.highlightPerTapEnabled =YES;
//控制种类的显示位置
ChartLegend *ZSJ_l = chartView.legend;
ZSJ_l.position =ChartLegendPositionRightOfChart;
ZSJ_l.xEntrySpace = 7.0;
ZSJ_l.yEntrySpace = 0.0;
ZSJ_l.yOffset = 0.0;
2.显示数据的百分比,计算
double mult = range;
NSMutableArray *yVals1 = [[NSMutableArrayalloc]init];
//计算每个种类的,百分比
for (int i =0; i < count; i++){
[yVals1 addObject:[[BarChartDataEntryalloc]initWithValue: (arc4random_uniform(mult) + mult /5)xIndex:i]];
}
// 种类数据的Data
NSMutableArray *xVals = [[NSMutableArrayalloc]init];
for (int i =0; i < count; i++){
[xVals addObject:_parties[i %_parties.count]];
}
//种类,下方的说明
PieChartDataSet *dataSet = [[PieChartDataSetalloc]initWithYVals:yVals1 label:@"成功QQ吧成员分析"];
// 模块间的间距
dataSet.sliceSpace = 2.0;
// 添加颜色
NSMutableArray *colors = [[NSMutableArrayalloc]init];
[colors addObjectsFromArray:ChartColorTemplates.vordiplom];
[colors addObjectsFromArray:ChartColorTemplates.joyful];
[colors addObjectsFromArray:ChartColorTemplates.colorful];
[colors addObjectsFromArray:ChartColorTemplates.liberty];
[colors addObjectsFromArray:ChartColorTemplates.pastel];
[colors addObject:[UIColorcolorWithRed:51/255.fgreen:181/255.fblue:229/255.f alpha:1.f]];
dataSet.colors = colors;
PieChartData *data = [[PieChartDataalloc]initWithXVals:xValsdataSet:dataSet];
NSNumberFormatter *pFormatter = [[NSNumberFormatteralloc]init];
pFormatter.numberStyle =NSNumberFormatterPercentStyle;
pFormatter.maximumFractionDigits =1;
pFormatter.multiplier = @1.f;
pFormatter.percentSymbol = @" %";
[data setValueFormatter:pFormatter];
[data setValueFont:[UIFontfontWithName:@"HelveticaNeue-Light"size:11.f]];
[data setValueTextColor:UIColor.whiteColor];
// 数据传递
_ZSJ_IntegralPlate_View.data = data;
//设置那个模块,为高亮
[_ZSJ_IntegralPlate_ViewhighlightValues:@[]];
- (void)chartValueSelected:(ChartViewBase *__nonnull)chartView entry: (ChartDataEntry *__nonnull)entry dataSetIndex:(NSInteger)dataSetIndex highlight: (ChartHighlight *__nonnull)highlight{
NSLog(@"chartValueSelected");
}
- (void)chartValueNothingSelected:(ChartViewBase *__nonnull)chartView{
NSLog(@"chartValueNothingSelected");
}
6、说明,本例是Object-OC 和 Swift 的混编。如有什么问题,可以搜索 “成功QQ吧”或者 “QQ:1542100658”,进行咨询。 源码下载:http://download.csdn.net/detail/zhoushuangjian511/9438689