Swift - 第三方图表库Charts使用详解12(折线图11:获取、保存图片,极简样式)
作者:hangge | 2018-08-15 08:10
十一、获取、保存图表图片
1,获取图片
(1)效果图
- 点击“获取图片”按钮后,将当前图表生成一张图片(image),并显示在下方。
(2)样例代码
import UIKit import Charts class ViewController: UIViewController { //折线图 var chartView: LineChartView! @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() //创建折线图组件对象 chartView = LineChartView() chartView.frame = CGRect(x: 20, y: 80, width: self.view.bounds.width - 40, height: 250) self.view.addSubview(chartView) //生成20条随机数据 var dataEntries = [ChartDataEntry]() for i in 0..<20 { let y = arc4random()%100 let entry = ChartDataEntry.init(x: Double(i), y: Double(y)) dataEntries.append(entry) } //这50条数据作为1根折线里的所有数据 let chartDataSet = LineChartDataSet(values: dataEntries, label: "图例1") //目前折线图只包括1根折线 let chartData = LineChartData(dataSets: [chartDataSet]) //设置折现图数据 chartView.data = chartData } @IBAction func buttonTapped(_ sender: Any) { //获取图片 let image = chartView.getChartImage(transparent: true) //将其显示在imageView中 imageView.image = image } }
2,保存图表图片
如果需要将图表保存到系统相簿,同样是先通过 getChartImage() 方法获取 image 图片,然后使用 UIImageWriteToSavedPhotosAlbum() 方法进行保存。
//获取图片 let image = chartView.getChartImage(transparent: false) //将其保存到系统相册中 UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
附:极简样式的折线图
折线图相关的配置属性都介绍了差不多了,最后提供一个官方的 demo。在有些场景下,使用这样最简单的折线图,去掉各种附加的元素、样式,效果反而十分好。
import Charts class ViewController: UIViewController { //折线图 var chartView: LineChartView! override func viewDidLoad() { super.viewDidLoad() //创建折线图组件对象 chartView = LineChartView() chartView.frame = CGRect(x: 20, y: 80, width: self.view.bounds.width - 40, height: 150) chartView.legend.enabled = false chartView.leftAxis.enabled = false chartView.leftAxis.spaceTop = 0.4 chartView.leftAxis.spaceBottom = 0.4 chartView.rightAxis.enabled = false chartView.xAxis.enabled = false self.view.addSubview(chartView) //折线图背景色 chartView.backgroundColor = UIColor(red: 89/255, green: 199/255, blue: 250/255, alpha: 1) //生成8条随机数据 var dataEntries = [ChartDataEntry]() for i in 0..<8 { let y = arc4random()%100 let entry = ChartDataEntry.init(x: Double(i), y: Double(y)) dataEntries.append(entry) } //这50条数据作为1根折线里的所有数据 let chartDataSet = LineChartDataSet(values: dataEntries, label: "李子明") chartDataSet.lineWidth = 1.75 chartDataSet.circleRadius = 5.0 chartDataSet.circleHoleRadius = 2.5 chartDataSet.setColor(.white) chartDataSet.setCircleColor(.white) chartDataSet.highlightColor = .white chartDataSet.drawValuesEnabled = false //目前折线图只包括1根折线 let chartData = LineChartData(dataSets: [chartDataSet]) //设置折现图数据 chartView.data = chartData } }
全部评论(0)