首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >iOS_danielgindi/Charts饼状图pieChartView用法

iOS_danielgindi/Charts饼状图pieChartView用法

作者头像
mikimo
发布2022-07-20 13:46:20
发布2022-07-20 13:46:20
1.3K0
举报
文章被收录于专栏:iOS开发~iOS开发~
代码语言:javascript
复制
#import "PieChartsView.h"
#import "ChartsDemo-Bridging-Header.h"
#import "ChartsDemo-swift.h"
#define kSelfWidth self.frame.size.width
#define kSelfHeight self.frame.size.height

@implementation PieChartsView {
    PieChartView *_pieChartView;
}

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        [self uiConfig];
    }
    return self;
}

- (void)uiConfig {
    _pieChartView = [[PieChartView alloc] init];
    _pieChartView.backgroundColor = [UIColor cyanColor];
    _pieChartView.frame = CGRectMake(0, 0, kSelfWidth, kSelfHeight);
    _pieChartView.holeRadiusPercent = 0.4; // 中间空心半径比
    _pieChartView.transparentCircleRadiusPercent = 0;
    _pieChartView.chartDescription.enabled = NO;
    [_pieChartView setExtraOffsetsWithLeft:5.f top:10.f right:5.f bottom:5.f];
    
    ChartLegend *l = _pieChartView.legend;
    l.horizontalAlignment = ChartLegendHorizontalAlignmentRight;
    l.verticalAlignment = ChartLegendVerticalAlignmentTop;
    l.orientation = ChartLegendOrientationVertical;
    l.formSize = 10;
    l.font = [UIFont systemFontOfSize:10];
    [self addSubview:_pieChartView];
    
    // 开始设值
    NSDictionary *statistics = @{
                                 @"初步接洽":[NSNumber numberWithLong:27],
                                 @"需求确定":[NSNumber numberWithLong:11],
                                 @"方案报价":[NSNumber numberWithLong:8],
                                 @"谈判审核":[NSNumber numberWithLong:3],
                                 };
    NSMutableArray *values = [NSMutableArray array];
    
    //累加总数, 为了算百分比
    double total = 0;
    for (NSNumber *num in statistics.allValues) {
        total += [num doubleValue];
    }
    
    // 循环字典数组 创建data
    for (NSString *str in statistics.allKeys) {
        NSNumber *value = statistics[str];
        if ([value intValue] != 0) {
            [values addObject:[[PieChartDataEntry alloc] initWithValue:[value doubleValue]/total*100 label:str]];
        }
    }
    
    // 循环data数组 创建Set
    if (values.count > 0) {
        PieChartDataSet *dataSet = [[PieChartDataSet alloc] initWithValues:values label:@""];
        dataSet.sliceSpace = 2.0;
        
        //设置饼块颜色数组
        dataSet.colors = @[[UIColor blueColor], [UIColor brownColor], [UIColor redColor], [UIColor orangeColor]];
        
        PieChartData *data = [[PieChartData alloc] initWithDataSet:dataSet];
        
        NSNumberFormatter *pFormatter = [[NSNumberFormatter alloc] init];
        pFormatter.numberStyle = NSNumberFormatterPercentStyle;
        pFormatter.maximumFractionDigits = 1;
        pFormatter.multiplier = @1.f;
        [data setValueFormatter:[[ChartDefaultValueFormatter alloc] initWithFormatter:pFormatter]];
        [data setValueFont:[UIFont systemFontOfSize:8]];
        [data setValueTextColor:UIColor.whiteColor];
        
        _pieChartView.data = data;
        [_pieChartView highlightValues:nil];
    }
}


@end

github Demo 地址 (2020.12.19 更新)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档