AnotherBarChartViewController.swift 2.9 KB

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