一. Charts 资料汇总
-
官方资料
1.1 Charts 源代码
1.2 文档说明(概述) - 跟 MPAndroidChart API 有 95% 相似 -
其他资料
2.1 iOS 在 OC 项目中集成 Charts 图表框架
2.2 在Objective-C项目中使用ios-charts
二. Charts - LineChart 踩过的坑
-
X 轴坐标的第一个标签不显示
修复前后对比图
实现代码:/* 通过设置 X 轴最小值小于输入的 X 轴数据值的最小值即可, * 博主输入的 X 轴最小值为 0,此处设置为 -0.01,使 X 轴第一个标签值能够稍微右移,达到显示的目的 * / chartView.xAxis.axisMinimum = -0.01;
-
当 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)
-
在左右滑动折线显示的过程中,整个图表视图有轻微的往上移动的迹象
解决代码://在设置完所有折线图表参数后,调用 notifyDataSetChanged 来解决该问题。博主没有去深究其背后原因了。 [chartView notifyDataSetChanged];
-
设置折线数据点的格式,指定显示的数据为 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]; }
-
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