十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
iOS图表库Charts使用(不常见但很实用的属性)
成都创新互联公司是一家专业提供寻乌企业网站建设,专注与成都网站建设、网站设计、H5页面制作、小程序制作等业务。10年已为寻乌众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
至于Charts的普通demo方法请参见其它文章,本文主要讲述Charts不常见但很实用的属性。(关于集成的方法参见我的上一篇文章: iOS图表库Charts集成与使用 )
普通demo文章: iOS在OC项目中集成Charts绘制图表框架 这个是王雷大神的博客,对charts讲解很详细
OC调用Charts绘制图表--BarChartView
这个是李大宝(群主)的博客对于chart的理解,个人认为他是个逗逼,????加入他的chart群交流,群号:539641834
所谓天下文章一般抄,百度出来的chart文章大部分都雷同。
好,开始不一样的讲解:
由于老板是个老者(今年50,60岁了),从事java多年,指导我们需求这一块,
1.交互柱状图时,只让用户左右滑动,不缩放,
解析:由于 chart官网 以及上面 大神的demo 都是默认先缩放后才可以滑动,这就出现了困难,经过几番查找,发现只要在创建图表时就设置缩放的比例,这样用户交互时,就不用先放大后才可以滑动,从而解决需求,当然x,y轴的手势启动也要相应的设置下。
方法:
// 需求:只滑动不缩放:(系统内部默认是先缩放后滑动)及初始化时x轴就缩放1.5倍,就可以滑动了,
ChartViewPortHandler *scaleX = _barChartView.viewPortHandler;
[scaleX setMinimumScaleX:1.5f];
//设置动画效果,可以设置X轴和Y轴的动画效果
[_barChartView animateWithYAxisDuration:0.25f];
2.当x轴每一个单元数据太长(比如说学生的名字太长),就会形成太拥挤的现象
解析:可以倾斜显示x轴每一个单元数据,// xAxis.labelRotationAngle = -30;// x轴上名字的旋转角度,仿网页上的
但是这样又会形成,第一次进来时,学生名字只显示一半,向左滑动后,才偏移出全部的名字,但是整个barChartView也会上移动,后来用_barChartView.extraBottomOffset = 15;也解决不了问题。
办法:索性就不用倾斜显示了,即:
一个页面显示的数据太多了,都不看清楚,怎么样设置一个页面显示固定条数的数据,如果数据太多需要手动滑动看到
//设置一页显示的数据条数,超出的数量需要滑动查看:
_barChartView.setVisibleXRangeMaximum(double);//需要在设置数据源后生效(这是一个坑,懒加载写这个方法并没任何反应,必须在调用数据后使用才有效果)
我的:
我是在
(// 需求:只滑动不缩放:(系统内部默认是先缩放后滑动)及初始化时x轴就缩放1.5倍,就可以滑动了,
ChartViewPortHandler *scaleX = _barChartView.viewPortHandler;
[scaleX setMinimumScaleX:1.5f];)
下使用(// xAxis.labelRotationAngle = -30;// x轴上名字的旋转角度,
xAxis.labelPosition = XAxisLabelPositionBottom;//X轴的显示位置,默认是显示在上面的)的,每一次进来就这样:
向左滑动后才:
若是有那个大神知道欢迎告知,我的解决就是没用倾斜的方法,直接用了_barChartView.setVisibleXRangeMaximum(double);
其他实用属性方法陆续更新。。。。
因为这个charts库是用swift写的,但是还是很强大的,一般的功能几乎都可以实现,不过用起来有些地方还是不是很好找,原谅我的英语水平啦。。。。我根据平时用的简单描述下oc怎样使用charts。
首先集成,建议用pod 这样可以减少一些不必要的麻烦,pod 'Charts'
但是在podfile文件里面集成swift库的时候要用use_frameworks!
(use_frameworks!选项是告诉 CocoaPods 使用 framework 而不是静态库。这在 Swift 项目中是必选。
我们添加的那行(pod 'Charts')是让 CocoaPods 知道我们要用 Charts。)
然后创建桥接oc-swift桥接文件
创建桥接文件,随便创建一个swift文件即可,xcode会给你自动生成一个,然后在桥接文件里导入@import Charts;
即可,那边需要用到charts就将桥接文件导入即可
然后。。。重点来了
swift language version 一定要调成xcode对应的最高版本,如果不设置会报错的,然后你如果用pod 又导入别的框架的话charts又会报错,跑不起来了,我我发现只要pod install以后,之前对charts做的一些修改配置就会没了,每次都得重新设置一下,这点困惑了我好长时间。。。。关于配置网上有好多教程。基本配置搞完了。。。。。。(我发现只要pod install以后,之前对charts做的一些修改配置就会没了,每次都得重新设置一下)。
关于柱状图的使用
这个是设置y轴显示单位的需要设置IChartAxisValueFormatter代理
想设置一个x坐标对应多个柱状图的话
想要图表可以左右滑动
好了,这是暂时我觉得有用的东西,后期还会继续更新的。。。。。。。欢迎点赞。
接着,我们添加函数库到项目中。你可以用 CocoaPods 安装该库,这里我们直接手动安装。
下载 ios-charts 项目,这个 zip 文件包含了函数库(名为 Charts 的文件夹)和一个示例项目(名为 ChartsDemo)。如果你想了解更多关于函数库的知识,示例项目是很棒的资源。
解压缩已下载的文件,并将 Charts 文件复制粘贴到你项目(iOSChartsDemo)的根目录下。在 Finder 中打开Charts文件,并将 Charts.xcodeproj 拖拽到 Xcode 项目中。结构如下图所示。
接着从项目导航中选择你的项目,并确保该 iOSChartsDemo 目标被选中。在右边的常规选项卡中找到 Embedded Binaries 部分,点击该部分的+号添加图表框架。从列表中选择 Charts.framework 并点击 Add。
如果你想在 Objective-C 中使用函数库,请参考使用说明。
用 Command-B 或选择 Product Build 来生成项目。如果不这样做,当你导入 Charts 框架到你的项目时,Xcode 会报错——无法加载 Charts 底层模块。
现在开始创建第一个图表。
创建一个柱形图
打开 BarChartViewController.swift 文件,添加以下声明。
import Charts
打开故事板文件。我们需要添加用来显示图表的视图。从文档纲要中选择 Bar Chart View Controller,并在属性检查器中取消 Extend Edges 的 Under Top Barsin 选项。我们不希望图表自动延伸至导航栏下方。
接着拖拽一个视图到 Bar Chart View Controller 中,并按下图定位边界。该视图为控制器中主视图的子视图。
视图被选中后,在识别检查器中将它的类设为 BarChartView。再使用助理编辑器,加入视图的 outlet 到 BarChartViewController 类,并命名为 outletbarChartView。在 BarChartViewController 类中添加下列代码。
@IBOutlet weak var barChartView: BarChartView!
运行项目,并从表格中选择柱形图,你可能会得到视图提示信息:无可用的图表数据。
我所用到的最好的 iOS 图表库有两个一个是 Swift 版本的 Charts 不过混编起来有点操蛋.另外一个就是国人写的AAChartKit ,几乎支持所有主流类型(柱状图 、条形图 、折线图 、曲线图 、折线填充图 、曲线填充图、雷达图、极地图、扇形图、气泡图)的数据图表,配置也非常简单.
在此附上 AAChartKit 链接地址 网页链接, 下面是他的官方介绍
环境友好,兼容性强. 适配 iOS 6 +, 支持ARC,支持 Objective-C语言,配置简单.同时更有 Swift 版本AAInfographics可供使用.
功能强大,类型多样. 支持柱状图 、条形图 、折线图 、曲线图 、折线填充图 、曲线填充图、雷达图、极地图、扇形图、气泡图、散点图、区域范围图、柱形范围图、面积范围图、面积范围均线图、直方折线图、直方折线填充图、箱线图、瀑布图、热力图、桑基图、金字塔图、漏斗图、等二十几种类型的图形,不可谓之不多.
交互式图形动画. 有着清晰和充满细节的用户交互方式,与此同时,图形渲染动画效果细腻精致,流畅优美.有三十多种以上渲染动画效果可供选择,用户可自由设置渲染图形时的动画时间和动画类型,关于图形渲染动画类型,具体参见 AAChartKit 动画类型.
支持手势缩放.支持图表的手势缩放和拖动阅览,手势缩放类型具体参见 AAChartKit 手势缩放类型,默认禁用手势缩放功能.
极简主义. AAChartView + AAChartModel = Chart,在 AAChartKit 图表框架当中,遵循这样一个极简主义公式:图表视图控件 + 图表模型 = 你想要的图表.同另一款强大而又精美的图表库AAInfographics完全一致.
链式编程语法. 支持类 Masonry 链式编程语法,一行代码即可配置完成 AAChartModel模型对象实例.