Charts是一个很优秀的图表库,它支持Android、iOS、tvOS和macOS,这样使用起来,可以节省学习成本,可以从GitHub上了解更多信息。本文记录在iOS项目上的集成与使用。

  

    Charts目前版本是3.0.1,要求使用xcode8和swift3.0,最低支持iOS8.0,如果需要使用2.3.0版本的,需要在xcode8设置使用swift2.3版本的编译器,但是,苹果估计迟早会在后面版本移除2.3版本的支持吧,从swift发布开始就一路使用过来的同学体会应该很深,每次升级xcode,就要改一次swift代码,感觉掉进了无底深坑有木有~~~~~~所以,这里就使用3.0.1版本的吧!

  1. 新建测试项目,为了方便,使用swift语言来写,当然,也可以使用Objective-C来写,配置好桥接文件就可以了,也不难。

  2. 下载Charts项目,解压后项目文件如下:

    

   3. 添加项目"Charts.xcodeproj"到我们项目中:

    

    添加后如下:

    

   4. 添加framework支持:

    

    5. 编写测试代码:

      直接在原有ViewController类编写,直接代码写简单的view,Demo是用Objective-C写的,这里用Swift改写同样功能,代码如下:

//
// ViewController.swift
// TestCharts
//
// Created by LinJK on 22/12/2016.
// Copyright © 2016 LinJK. All rights reserved.
// import UIKit
import Charts class ViewController: UIViewController, ChartViewDelegate{ var charView:LineChartView?
var xAxis:XAxis? override func viewDidLoad() {
super.viewDidLoad()
//
charView = LineChartView(frame: CGRect(x: 0, y: 50, width: 300, height: 200))
charView!.delegate = self
charView!.chartDescription?.enabled = false
charView!.dragEnabled = false
charView!.setScaleEnabled(true)
charView!.pinchZoomEnabled = false
charView!.drawGridBackgroundEnabled = false
charView!.highlightPerDragEnabled = true
charView!.backgroundColor = UIColor.white
charView!.legend.enabled = true xAxis = charView?.xAxis
xAxis!.labelPosition = XAxis.LabelPosition.topInside
xAxis!.labelFont = UIFont(name: "HelveticaNeue", size: 10)!
xAxis!.labelTextColor = UIColor(red: 255/255.0, green: 192/255.0, blue: 56/255.0, alpha: 1.0)
xAxis!.drawAxisLineEnabled = false
xAxis!.drawGridLinesEnabled = true
xAxis!.centerAxisLabelsEnabled = true
xAxis!.granularity = 3600.0 charView!.rightAxis.enabled = false
charView!.legend.form = Legend.Form.line self.view.addSubview(charView!) self.updateChartData()
} override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
} func updateChartData() {
let count = 100.0
let range = 30.0
let hourSeconds:TimeInterval = 3600.0
let now = NSDate().timeIntervalSince1970
let from:TimeInterval = now-(count/2.0)*hourSeconds
let to:TimeInterval = now+(count/2.0)*hourSeconds var values:[ChartDataEntry] = [] var x = from
while x < to {
values.append(ChartDataEntry(x: x, y: Double(arc4random_uniform(UInt32(range)))+50)) x += hourSeconds
} var set1:LineChartDataSet? set1 = LineChartDataSet(values: values, label: "DataSet1")
set1!.axisDependency = YAxis.AxisDependency.left
set1!.valueTextColor = UIColor(red: 51/255.0, green: 181/255.0, blue: 229/255.0, alpha: 1.0)
set1!.lineWidth = 1.5
set1!.drawCirclesEnabled = false
set1!.drawValuesEnabled = false
set1!.fillAlpha = 0.26
set1!.fillColor = UIColor(red: 51/255.0, green: 181/255.0, blue: 229/255.0, alpha: 1.0)
set1!.highlightColor = UIColor(red: 224/255.0, green: 117/255.0, blue: 117/255.0, alpha: 1.0)
set1!.drawCircleHoleEnabled = false var dataSets:[ChartDataSet] = []
dataSets.append(set1!) let data:LineChartData! = LineChartData(dataSets: dataSets)
data.setValueTextColor(UIColor.white)
data.setValueFont(UIFont(name: "HelveticaNeue-Light", size: 9.0)) charView?.data = data if charView!.data!.dataSetCount > 0 {
set1 = charView!.data?.dataSets[0] as! LineChartDataSet?
set1!.values = values
charView!.data?.notifyDataChanged()
charView!.notifyDataSetChanged()
}
} //MARK: ChartViewDelegate
func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {
print("chartValueSelected")
} func chartValueNothingSelected(_ chartView: ChartViewBase) {
print("chartValueNothingSelected")
}
}

    使用上很简单,直接import Charts,然后新建一个view绑定到需要显示的图形类型库,并对其进行显示配置和数据填充即可。运行结果如下:

    

    其他的图形类似,这里就不重复了,大家可以测试使用一下。

iOS图表库Charts集成与使用的更多相关文章

  1. iOS 图表工具charts之CombinedChartView

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  2. iOS 图表工具charts之CandleStickChartView(K线)

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  3. iOS 图表工具charts之PieChartView

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  4. iOS 图表工具charts之BarChartView

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  5. iOS 图表工具charts之LineChartView

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  6. iOS 图表工具charts介绍

    charts是一个很好的绘图工具,功能非常强大,可以用来绘制折线,柱状图,饼状图,k线图,k线分时图,雷达图,气泡图等等,charts是一款仿照安卓 MPAndroidChart而来的一个基于swif ...

  7. PNChart,简洁高效有动画效果的iOS图表库

    导入 pod导入相对简单,要手动导入这个库,先下载下来(https://github.com/kevinzhow/PNChart),解压后把PNChart文件夹拖入工程中 运行发现#import&qu ...

  8. iOS 第三方库、插件、知名博客总结

    iOS 第三方库.插件.知名博客总结 用到的组件 1.通过CocoaPods安装 项目名称 项目信息 AFNetworking 网络请求组件 FMDB 本地数据库组件 SDWebImage 多个缩略图 ...

  9. 快快快!27个提升效率的iOS开源库推荐

    文章来源:http://www.csdn.net/article/2015-07-21/2825264-27-ios-open-source-libraries/1 我热爱开源,更喜爱那些花费宝贵的业 ...

随机推荐

  1. mysql 数据类型拾遗

    写这篇博客的原因是在建表的过程我建表时,在表名和字段名上没有注意,违背了团队的开发规范.我们团队规范是,名字上要能够体现对象的特征. 比如: 数据库要写db_dbname 表名要写tb_tbname ...

  2. CCS5.2/CCS5.3/CCS5.4 仿真调试小技巧

    操作系统: WinXP 32bit 仿真器: SEED-XDS560 Plus 开发环境: DSP.com/forum.php?mod=forumdisplay&fid=58" ta ...

  3. zapewnia stale poprawiając relacje związane

    W porównaniu do LG5, ta http://www.butyrunning.com/lunarestoa-2-m%C3%84%C2%99skie-c-2_70_71.html kon ...

  4. vector it->和*it

    //每次写代码总是被迭代器的iter->和*iter弄晕,主要是被protobuf弄晕了 #include <vector> struct test{ test(){ memset( ...

  5. SNMP协议以及著名的MIB详解

    SNMP协议介绍  简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task ...

  6. Hive : UDFArgumentTypeException Exactly one argument is expected.

    Hive执行时Failed.. 分段执行发现排除一些聚合函数或者内置函数后可以正常执行.. 因为Hive-Sql语句比较长..有很多的case when then 排除后发现是聚合函数的用法问题.. ...

  7. MySQL模糊搜索的四种用法

    1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '% ...

  8. net.sf.json.JSONException: There is a cycle in the hierarchy!的解决办法

    使用Hibernate manytoone属性关联主表的时候,如果使用JSONArray把pojo对象转换成json对象时,很容易出现循环的异常.解决的办法就是, 在转换json对象时忽略manyto ...

  9. 在本地调试移动设备上的页面——神器weinre介绍

    平时写代码,最喜欢用chrome的developer Tool调试页面了,基本是离不了的工具.但是当页面需要在移动设备上使用,尤其是被嵌入到Hybird APP中时,由于移动版的chrome没有dev ...

  10. KALI Linux problems & Study Red Hat | Ubuntu

    Problem When you ask some website with https head.you may met the problem  secure connection failed ...