常见绘图框架-(Charts)
swift 出来后有很多优秀的第三方绘图、动画框架,最近项目需要使用了 Charts
Github: https://github.com/danielgindi/Charts
因为是在Object-c工程上使用,所以使用cocoapod 工具导入,省了很多麻烦
podfile:
target 'DianLeIE’
pod 'Charts', '~> 3.0.0'
pod 'Realm', '~> 2.0.2'
use_frameworks!
在开始使用的时候遇到了一些问题,因为之前用core plote 第三绘图,很多都需要自己自定义,但是在Charts 上预留了很多自定义的方法,在使用时就不需要过多的计算,可能就是因为这个原因所以在github上star 很高,并且这个还有安卓版,坑的地方就是是看安卓使用文档,不过还是很容易看懂的,字面意思差不多。
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #703daa }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3e1e81 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 }
span.s1 { }
span.s2 { color: #4f8187 }
span.s3 { color: #703daa }
span.s4 { color: #3e1e81 }
span.s5 { color: #272ad8 }
span.s6 { color: #ba2da2 }
span.s7 { color: #000000 }
span.s8 { color: #008400 }
span.s9 { font: 14.0px "PingFang SC"; color: #008400 }
_chartView = [[LineChartView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
_chartView.delegate = self;
_chartView.chartDescription.enabled = NO;
_chartView.borderColor = [UIColor blackColor];
_chartView.dragEnabled = YES; //是否允许拖拽
//X缩放
[_chartView setScaleXEnabled:YES];
//Y缩放
[_chartView setScaleYEnabled:NO];
_chartView.pinchZoomEnabled = NO;
//setExtraOffsets 设置偏移位置 这里需要调,不然影响xAxis label 与 线条上对应的位置有误差
[_chartView setExtraOffsetsWithLeft:5.f top:0.f right:30.f bottom:0.f];
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #703daa }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #d12f1b }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3e1e81 }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #4f8187 }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { font: 14.0px "PingFang SC" }
span.s4 { color: #4f8187 }
span.s5 { color: #703daa }
span.s6 { color: #3e1e81 }
span.s7 { color: #008400 }
span.s8 { font: 14.0px "PingFang SC"; color: #008400 }
span.s9 { color: #272ad8 }
span.s10 { color: #ba2da2 }
span.s11 { color: #31595d }
span.s12 { color: #d12f1b }
//设置图例
ChartLegend *l = _chartView.legend;
l.form = ChartLegendFormSquare; //图例样式
l.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:11.f];
l.textColor = [UIColor blackColor];
l.horizontalAlignment = ChartLegendHorizontalAlignmentRight; //水平方向位置
l.verticalAlignment = ChartLegendVerticalAlignmentBottom; //垂直方向位置
l.orientation = ChartLegendOrientationHorizontal;
l.drawInside = NO;
//X轴属性设置
ChartXAxis *xAxis = _chartView.xAxis;
xAxis.labelFont = [UIFont systemFontOfSize:11.f];
xAxis.labelTextColor = [UIColor hex:@"666666"]; //009b34
xAxis.drawGridLinesEnabled = NO;
xAxis.drawAxisLineEnabled = YES;
_xAxisFormatter = [[DateValueFormatter alloc] init];
xAxis.valueFormatter = self; //自定xAxis label值样式
xAxis.labelCount = 5;
xAxis.labelPosition = ChartLimitLabelPositionLeftBottom; //x轴位置
xAxis.labelRotationAngle = -20;
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #008400 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
span.s1 { font: 14.0px Menlo; color: #000000 }
span.s2 { font: 14.0px Menlo }
span.s3 { }
span.s4 { color: #703daa }
span.s5 { color: #4f8187 }
span.s6 { color: #31595d }
span.s7 { color: #d12f1b }
span.s8 { color: #008400 }
span.s9 { color: #272ad8 }
span.s10 { color: #ba2da2 }
span.s11 { font: 14.0px "PingFang SC"; color: #008400 }
span.s12 { color: #3e1e81 }
//左侧y轴属性设置
ChartYAxis *leftAxis = _chartView.leftAxis;
leftAxis.labelTextColor = [UIColor hex:@"9d9d9d"]; //9d9d9d
leftAxis.axisMinimum = 0.0; //设置leftAxis label 最小值为0
leftAxis.drawGridLinesEnabled = YES;
leftAxis.drawZeroLineEnabled = NO;
leftAxis.granularityEnabled = NO;
leftAxis.drawAxisLineEnabled = NO;
leftAxis.xOffset = 15; //x 位置偏移
[leftAxis setGridColor:[UIColor hex:@"efeff4"]]; //设置y轴表格颜色值
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { font: 14.0px "PingFang SC" }
span.s4 { color: #703daa }
span.s5 { color: #4f8187 }
span.s6 { color: #272ad8 }
span.s7 { color: #ba2da2 }
//右侧Y轴属性设置
ChartYAxis *rightAxis = _chartView.rightAxis;
rightAxis.axisMaximum = 0 ;
rightAxis.axisMinimum = 0 ;
rightAxis.drawAxisLineEnabled = NO;
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #4f8187 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px }
span.s1 { color: #000000 }
span.s2 { }
span.s3 { font: 14.0px "PingFang SC" }
span.s4 { color: #4f8187 }
span.s5 { color: #703daa }
span.s6 { color: #3e1e81 }
span.s7 { color: #272ad8 }
span.s8 { color: #31595d }
span.s9 { color: #d12f1b }
//继承ChartMarkerImage 自定义提示框 这里BalloonMarker 是Charts Demo中找到了,自个加一下修改
_marker = [[BalloonMarker alloc]
initWithColor: [UIColor colorWithWhite:180/255. alpha:1.0]
font: [UIFont systemFontOfSize:12.0]
textColor: [UIColor hex:@"666666"]
insets: UIEdgeInsetsMake(0, 0, 0, 0)];
_marker.chartView = _chartView;
_marker.image = [UIImage imageNamed:@"icon_marker"];
_marker.minimumSize = CGSizeMake(80.f, 40.f);
_chartView.marker = _marker;
//最坑的在这里,设置X轴最大显示范围 必须在设置数据 后加入,不然因为填充数据后重新计算会导致错误,并且要移除charView上历史视图
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3e1e81 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #4f8187 }
span.s1 { }
span.s2 { color: #ba2da2 }
span.s3 { color: #31595d }
span.s4 { color: #703daa }
span.s5 { color: #000000 }
span.s6 { color: #4f8187 }
span.s7 { color: #272ad8 }
span.s8 { color: #3e1e81 }
[self setDataCount:dataArry.count Data:dataArry dateArry:dateArry];
[_chartView setVisibleXRangeMaximum:5.0f];
[_chartView setVisibleXRangeMinimum:5.0f];
[_chartView moveViewToX:_dateArry.count+1];
如果最开始使用建议下载Demo并且查看安卓版文档:https://github.com/PhilJay/MPAndroidChart/wiki
一些常见的问题也可在这查看:https://github.com/PhilJay/MPAndroidChart/issues
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #1337ff }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3e1e81 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
span.s1 { }
常见绘图框架-(Charts)的更多相关文章
- 常见MVC框架比较
常见MVC框架比较 运行性能上: Jsp+servlet>struts1>spring mvc>struts2+freemarker>>struts2,ognl,值栈. ...
- 陈灯WGF双缓冲绘图框架
“木丸子童屋”,专售各类儿童玩具,价格优惠,请大家多多支持:http://shop65552598.taobao.com/ WGF(windows graphic foundation)为window ...
- 认识ExtJS(04)--常见Web框架的ExtJS改造
常见Web框架的ExtJS改造 怎样开始改造工作? 改造主要集中在对表现层的修改,底层的数据库访问不需要进行任何的变动.也就是说主要集中早这2个方面:一方面是表现部分即是JSP页面:另一方面是客户端与 ...
- iOS绘图框架CoreGraphics分析
由于CoreGraphics框架有太多的API,对于初次接触或者对该框架不是十分了解的人,在绘图时,对API的选择会感到有些迷茫,甚至会觉得iOS的图形绘制有些繁琐.因此,本文主要介绍一下iOS的绘图 ...
- iOS - Quartz 2D 第三方框架 Charts 绘制图表
1.Charts 简介 使用第三方框架 Charts 绘制 iOS 图表.GitHub 源码 Charts Charts 是一款用于绘制图表的框架,可以绘制柱状图.折线图.K线图.饼状图等.Chart ...
- 7个常见Javascript框架介绍
设计开发中的“框架”指一套包含工具.函数库.约定,以及尝试从常用任务中抽象出可以复用的通用模块,目标是使设计师和开发人员把重点放在任务项目所特有的方面,避免重复开发.通俗的讲,框架就是最常用的java ...
- 常见JAVA框架
Spring Framework [Java开源JEE框架] Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不 ...
- VUE 与其他常见前端框架对比
对比其他框架(转官方文档) 这个页面无疑是最难编写的,但我们认为它也是非常重要的.或许你曾遇到了一些问题并且已经用其他的框架解决了.你来这里的目的是看看 Vue 是否有更好的解决方案.这也是我们在此想 ...
- 2019年Web前端最新导航(常见前端框架、前端大牛)
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 前言 本文列出了很多与前端有关的常见网站.博客.工具等,整体来看比较权威.有些东西已经 ...
随机推荐
- SQL: ROW_NUMBER
- iOS开发 - OC - 实现本地数据存储的几种方式一
iOS常用的存储方式介绍 在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用 ...
- Esfog_UnityShader教程_NormalMap法线贴图
咳咳,好久没有更新了,一来是这段时间很忙很忙,再来就是自己有些懒了,这个要不得啊,赶紧补上.在前面我们已经介绍过了漫反射和镜面反射,这两个是基本的光照类型,仅仅依靠它们就想制作出精美的效果是远远不够的 ...
- 修改Oracle字符集为 ZHS16GBK
SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 10 13:12:48 2016 Copyright (c) 1982, 2009, Oracle ...
- find命令和tar命令的使用
tar命令 tar -zcvf small.tar.gz small(目录名) (压缩) tar -zxvf small.tar.gz -C small(目录名) (解压到指定目录) find 命令 ...
- Android学习起步 - AutoCompleteTextView及MultiAutoCompleteTextView控件使用
大家在用百度搜索时,输入几个词就出现下拉框可选,以下两个控件就具有这个功能 AutoCompleteTextView:只能匹配输入的开始,只有一次匹配 MultiAutoCompleteTextVie ...
- [转]jquery getJSON 数据联动(采用序列化和反序列化获取数据) .
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> ...
- oracle 邮件发送
CREATE OR REPLACE PROCEDURE PRC_sendmail(p_receiver VARCHAR2, -- 邮件接收人 ...
- 数据库——JDBC
数据库--JDBC 数据库优点:降低存储数据的冗余度: 更高的数据一致性: 存储的数据可以共享: 可以建立数据库所遵循的标准: 便于维护数据完整性: 能够实现数据的安全性: 建立数据库: 数据库的存储 ...
- c++ 类的静态变量
类的静态变量作为类的一部分,但不由类的创建产生,类的销毁而消失.静态变量和全局变量一样,会在main函数结束后销毁. 类可以对静态变量的值进行改变 #pragma once class ctest { ...