AnotherBarChartViewController.swift 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. //
  2. // AnotherBarChartViewController.swift
  3. // ChartsDemo-iOS
  4. //
  5. // Created by Jacob Christie on 2017-07-09.
  6. // Copyright © 2017 jc. All rights reserved.
  7. //
  8. #if canImport(UIKit)
  9. import UIKit
  10. #endif
  11. import DGCharts
  12. class AnotherBarChartViewController: DemoBaseViewController {
  13. @IBOutlet var chartView: BarChartView!
  14. @IBOutlet var sliderX: UISlider!
  15. @IBOutlet var sliderY: UISlider!
  16. @IBOutlet var sliderTextX: UITextField!
  17. @IBOutlet var sliderTextY: UITextField!
  18. override func viewDidLoad() {
  19. super.viewDidLoad()
  20. // Do any additional setup after loading the view.
  21. self.title = "Another Bar Chart"
  22. self.options = [.toggleValues,
  23. .toggleHighlight,
  24. .animateX,
  25. .animateY,
  26. .animateXY,
  27. .saveToGallery,
  28. .togglePinchZoom,
  29. .toggleData,
  30. .toggleBarBorders]
  31. chartView.delegate = self
  32. chartView.chartDescription.enabled = false
  33. chartView.maxVisibleCount = 60
  34. chartView.pinchZoomEnabled = false
  35. chartView.drawBarShadowEnabled = false
  36. let xAxis = chartView.xAxis
  37. xAxis.labelPosition = .bottom
  38. chartView.legend.enabled = false
  39. sliderX.value = 10
  40. sliderY.value = 100
  41. self.slidersValueChanged(nil)
  42. }
  43. override func updateChartData() {
  44. if self.shouldHideData {
  45. chartView.data = nil
  46. return
  47. }
  48. self.setDataCount(Int(sliderX.value) + 1, range: Double(sliderY.value))
  49. }
  50. func setDataCount(_ count: Int, range: Double) {
  51. let yVals = (0..<count).map { (i) -> BarChartDataEntry in
  52. let mult = range + 1
  53. let val = Double(arc4random_uniform(UInt32(mult))) + mult/3
  54. return BarChartDataEntry(x: Double(i), y: val)
  55. }
  56. var set1: BarChartDataSet! = nil
  57. if let set = chartView.data?.first as? BarChartDataSet {
  58. set1 = set
  59. set1?.replaceEntries(yVals)
  60. chartView.data?.notifyDataChanged()
  61. chartView.notifyDataSetChanged()
  62. } else {
  63. set1 = BarChartDataSet(entries: yVals, label: "Data Set")
  64. set1.colors = ChartColorTemplates.vordiplom()
  65. set1.drawValuesEnabled = false
  66. let data = BarChartData(dataSet: set1)
  67. chartView.data = data
  68. chartView.fitBars = true
  69. }
  70. chartView.setNeedsDisplay()
  71. }
  72. override func optionTapped(_ option: Option) {
  73. super.handleOption(option, forChartView: chartView)
  74. }
  75. // MARK: - Actions
  76. @IBAction func slidersValueChanged(_ sender: Any?) {
  77. sliderTextX.text = "\(Int(sliderX.value))"
  78. sliderTextY.text = "\(Int(sliderY.value))"
  79. self.updateChartData()
  80. }
  81. }