返回 导航

Swift

hangge.com

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)

回到顶部