我的百分比数据盘(样式优美)


       前言:随着现在App项目的开发。出现模块数据百分比的页面出现频率大大增加。同时,公司要求效果还的很牛逼。简单的数据显示,已经满足不了客户的眼球,也得不到用户的赞同。得不到赞同,就是拉不到投资。本文,将推出一个效果,中等靠上的百分比显示器。还可以交互。

       正文:
       第一:我先看效果图。


       第二:功能说明
       1、此图形为圆饼图。
       2、图形数据分数,可以随意自定义。
       3、可以设置,个个部分之间的间距
       4、可以更改,上面显示的模块形式(自定义)
       5、改模块盘,是可以交互的。(选择和滑动)
       
       第三:代码阐述
       
        1、 主角的声明和创建

    // 主要显示图层              声明

    @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];

         2、数据的设置
         

    // 数据加入

    _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:@[]];


     5、两个代理

     - (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




    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值