十一、获取、保存图表图片
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
}
}
原文出自:www.hangge.com 原文链接:https://www.hangge.com/blog/cache/detail_2136.html