iOS danielgindi/Charts (V3.1.0) - LineChart 相关资料和踩过的坑

一. Charts 资料汇总

  1. 官方资料
    1.1 Charts 源代码
    1.2 文档说明(概述) - 跟 MPAndroidChart API 有 95% 相似

  2. 其他资料
    2.1 iOS 在 OC 项目中集成 Charts 图表框架
    2.2 在Objective-C项目中使用ios-charts

二. Charts - LineChart 踩过的坑

  1. X 轴坐标的第一个标签不显示

    修复前后对比图在这里插入图片描述
    实现代码:

    /* 通过设置 X 轴最小值小于输入的 X 轴数据值的最小值即可,
     * 博主输入的 X 轴最小值为 0,此处设置为 -0.01,使 X 轴第一个标签值能够稍微右移,达到显示的目的
     * /
    chartView.xAxis.axisMinimum = -0.01;
    
  2. 当 X 轴数据源的数据数量少于设置的标签数时,X 轴显示的标签间距异常的问题
    需求:X 轴显示部分坐标值,左右滑动显示剩余坐标值的效果,并且标签间距不随着的数据数量而改变。
    错误实现:

    //NSInteger iXAxisLabelCnt;      //X 轴标签数
    
    iXAxisLabelCnt = 6;
    [chartView setVisibleXRangeWithMinXRange:iXAxisLabelCnt maxXRange:iXAxisLabelCnt];//有固定标签间距的功能
    
    /* 博主指定标签数为 6,当数据源数据量大于等于 6 时,显示正常,可少于 6 时,显示异常了。
     * 后面经过验证发现:尽管数据源只有 2 个数据,但在 X 轴标签格式设置方法中调试打印却发现,
     * 仍旧把数据源数据个数平分 6 份依次传入标签格式设置方法,这才导致如下显示异常的现象 */
    

    错误结果:
    在这里插入图片描述
    正确实现:

    //NSInteger iXAxisLabelCnt;      //X 轴标签数
    iXAxisLabelCnt = 6;
    
    //xVals 是 X 轴的数据源,当数据源数量少于设置的标签数时,通过如下方法动态调整显示的标签数,可以解决该问题。
    chartView.xAxis.labelCount = ((xVals.count < iXAxisLabelCnt) ? xVals.count : iXAxisLabelCnt)
    
    [chartView setVisibleXRangeWithMinXRange:iXAxisLabelCnt maxXRange:iXAxisLabelCnt];//有固定标签间距的功能
    

    正确结果:
    在这里插入图片描述

    注意:X 轴的 chartView.xAxis.labelCount 属性默认的最小值为 2,如下图所示
    在这里插入图片描述
    当数据个数为 1 时,显示仍旧会存在问题,需要把默认的最小值改为 1,如下图所示(AxisBase.swift)
    在这里插入图片描述

  3. 在左右滑动折线显示的过程中,整个图表视图有轻微的往上移动的迹象
    解决代码:

    //在设置完所有折线图表参数后,调用 notifyDataSetChanged 来解决该问题。博主没有去深究其背后原因了。
    [chartView notifyDataSetChanged];
    
  4. 设置折线数据点的格式,指定显示的数据为 1 位小数
    部分实现代码:

    //设置折线类遵守 IChartValueFormatter 协议
    @interface LineChart () <IChartValueFormatter>
    @end
    
    LineChartDataSet *dataSet = [[LineChartDataSet alloc] initWithValues:yVals label:lineName];
    //设置数据格式
    dataSet.valueFormatter = self;
    
    #pragma mark 设置折线数据点的格式  --- IChartValueFormatter 的协议方法实现
    - (NSString *)stringForValue:(double)value entry:(ChartDataEntry *)entry dataSetIndex:(NSInteger)dataSetIndex viewPortHandler:(ChartViewPortHandler *)viewPortHandler
    {
        return [NSString stringWithFormat:@"%.1f", value];
    }
    
  5. Xcode 9 升级到 Xcode 10.1 版本后,编译提示找不到 swift 桥接头文件
    解决方法:博主在 Xcode 9 时按照博文 iOS 在 OC 项目中集成 Charts 图表框架 中的介绍集成 Charts;升级 Xcode 10 后,编译始终提示桥接头文件找不到,最后灵机一动,在需要导入桥接头文件的地方,直接用以下替换,编译成功。不需要使用桥接头文件了

    @import Charts;
    //替换导入桥接头文件
    //#import  "桥接头文件.h"
    

    注:因为 Xcode 10 支持 swift 4.2,所以也顺便把 Charts 版本升级到了 3.2.0

三:MPAndroidChart (V2.2.5) - LineChart 相关资料和踩过的坑

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值