加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 很强大的图表库-Charts使用

发布时间:2020-12-14 07:03:18 所属栏目:百科 来源:网络整理
导读:前言: 今天分享一个很漂亮的功能强大的图表库,希望对有需要的同学,有帮助,喜欢请点个赞,支持一下.谢谢~ 在项目中如何加入Swift库请看我的上一篇文章 http://www.jianshu.com/p/fd91c10c9f55 编译环境: Xcode7.3 添加Charts图表库 // 在Podfile中 use_framewo

前言: 今天分享一个很漂亮的功能强大的图表库,希望对有需要的同学,有帮助,喜欢请点个赞,支持一下.谢谢~
在项目中如何加入Swift库请看我的上一篇文章
http://www.jianshu.com/p/fd91c10c9f55

编译环境: Xcode7.3

添加Charts图表库
// 在Podfile中
use_frameworks!
pod 'Charts'
import Charts

创建柱状图

func createLineChartView()
    {
        chartView = BarChartView.init(frame: CGRectMake(0,64,screenWidth,screenHeight - 64))
        chartView.barData
        // 签协议
        chartView.delegate = self
        chartView.backgroundColor = UIColor.whiteColor()
        self.view.addSubview(chartView)
    }

模拟数据赋值

func setChart(dataPoints: [String],values: [Double]) {
        var dataEntries: [BarChartDataEntry] = []
        for i in 0..<dataPoints.count {
            let dataEntry = BarChartDataEntry(value: values[i],xIndex: i)
            dataEntries.append(dataEntry)
        }
        let chartDataSet = BarChartDataSet(yVals: dataEntries,label: "Units Sold")
        let chartData = BarChartData(xVals: months,dataSet: chartDataSet)
        // 加上一个界限,演示图中红色的线
        let jx = ChartLimitLine(limit: 12.0,label: "I am LimitLine")
        chartView.rightAxis.addLimitLine(jx)
        chartView.data = chartData
        // 自定义颜色
        // 例子中有十二个柱状图
        // colors 是一个数组,可以给相应的颜色
        chartDataSet.colors = [UIColor.blueColor(),UIColor.redColor(),UIColor.cyanColor()]
        // API 自带颜色模板
        // ChartColorTemplates.liberty()
        // ChartColorTemplates.joyful()
        // ChartColorTemplates.pastel()
        // ChartColorTemplates.colorful()
        // ChartColorTemplates.vordiplom()
        chartDataSet.colors = ChartColorTemplates.liberty()
        /** // 动画效果,简单列举几个,具体请看API case EaseInBack case EaSEOutBack case EaseInOutBack case EaseInBounce case EaSEOutBounce case EaseInOutBounce */
        // 加上动画 
        chartView.animate(yAxisDuration: 1.0,easingOption: .EaseInBounce)
    }

还可以保存当前的图表状态,写一个保存按钮

func createRightBarButtonItem()
    {
        let buttonRight = UIButton.init(type: UIButtonType.Custom)
        buttonRight.frame = CGRectMake(0,0,40,40)
        self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: buttonRight)
        buttonRight.setTitle("Save",forState: UIControlState.Normal)
        buttonRight.addTarget(self,action:#selector(ViewController.save(_:)),forControlEvents: UIControlEvents.TouchUpInside)
    }

点击方法中加入以下代码

func save(btn: UIButton)
    {
        // 保存到相册
        chartView.saveToCameraRoll()
        print("保存成功")
    }

你可能还想实现点击单个立柱实现不同的点击事件
你可以 实现ChartViewDelegate

class ViewController: UIViewController,ChartViewDelegate {
// 在创建的时候签协议
// chartView.delegate = self
// 实现协议方法
func chartValueSelected(chartView: ChartViewBase,entry: ChartDataEntry,dataSetIndex: Int,highlight: ChartHighlight) {
        print("(entry.value) in (months[entry.xIndex])")
    }


这样创建折线图

chartView = LineChartView.init(frame: CGRectMake(0,64,screenHeight - 64))

模拟数据赋值改成如下代码

var dataEntries: [ChartDataEntry] = []
        for i in 0..<dataPoints.count {
            let dataEntry = ChartDataEntry(value: values[i],xIndex: i)
            dataEntries.append(dataEntry)
        }
        let chartDataSet = LineChartDataSet(yVals: dataEntries,label: "Units Sold")
        let chartData = LineChartData(xVals: months,dataSet: chartDataSet)

总结: 图标支持缩放点击,这里我只给出了两种样式的图标代码示例,详情请看官方API和Demo请点击
考虑到文章可能思路混乱有些地方不清楚我会放上github地址,方便大家学习下载查看请点击

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读