// // HalfPieChartViewController.swift // ChartsDemo-iOS // // Created by Jacob Christie on 2017-07-09. // Copyright © 2017 jc. All rights reserved. // #if canImport(UIKit) import UIKit #endif import DGCharts class HalfPieChartViewController: DemoBaseViewController { @IBOutlet var chartView: PieChartView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.title = "Half Pie Chart" self.options = [.toggleValues, .toggleXValues, .togglePercent, .toggleHole, .animateX, .animateY, .animateXY, .spin, .drawCenter, .saveToGallery, .toggleData] self.setup(pieChartView: chartView) chartView.delegate = self chartView.holeColor = .white chartView.transparentCircleColor = NSUIColor.white.withAlphaComponent(0.43) chartView.holeRadiusPercent = 0.58 chartView.rotationEnabled = false chartView.highlightPerTapEnabled = true chartView.maxAngle = 180 // Half chart chartView.rotationAngle = 180 // Rotate to make the half on the upper side chartView.centerTextOffset = CGPoint(x: 0, y: -20) let l = chartView.legend l.horizontalAlignment = .center l.verticalAlignment = .top l.orientation = .horizontal l.drawInside = false l.xEntrySpace = 7 l.yEntrySpace = 0 l.yOffset = 0 // chartView.legend = l // entry label styling chartView.entryLabelColor = .white chartView.entryLabelFont = UIFont(name:"HelveticaNeue-Light", size:12)! self.updateChartData() chartView.animate(xAxisDuration: 1.4, easingOption: .easeOutBack) } override func updateChartData() { if self.shouldHideData { chartView.data = nil return } self.setDataCount(4, range: 100) } func setDataCount(_ count: Int, range: UInt32) { let entries = (0.. PieChartDataEntry in // IMPORTANT: In a PieChart, no values (Entry) should have the same xIndex (even if from different DataSets), since no values can be drawn above each other. return PieChartDataEntry(value: Double(arc4random_uniform(range) + range / 5), label: parties[i % parties.count]) } let set = PieChartDataSet(entries: entries, label: "Election Results") set.sliceSpace = 3 set.selectionShift = 5 set.colors = ChartColorTemplates.material() let data = PieChartData(dataSet: set) let pFormatter = NumberFormatter() pFormatter.numberStyle = .percent pFormatter.maximumFractionDigits = 1 pFormatter.multiplier = 1 pFormatter.percentSymbol = " %" data.setValueFormatter(DefaultValueFormatter(formatter: pFormatter)) data.setValueFont(UIFont(name: "HelveticaNeue-Light", size: 11)!) data.setValueTextColor(.white) chartView.data = data chartView.setNeedsDisplay() } override func optionTapped(_ option: Option) { switch option { case .toggleXValues: chartView.drawEntryLabelsEnabled = !chartView.drawEntryLabelsEnabled chartView.setNeedsDisplay() case .togglePercent: chartView.usePercentValuesEnabled = !chartView.usePercentValuesEnabled chartView.setNeedsDisplay() case .toggleHole: chartView.drawHoleEnabled = !chartView.drawHoleEnabled chartView.setNeedsDisplay() case .drawCenter: chartView.drawCenterTextEnabled = !chartView.drawCenterTextEnabled chartView.setNeedsDisplay() case .animateX: chartView.animate(xAxisDuration: 1.4) case .animateY: chartView.animate(yAxisDuration: 1.4) case .animateXY: chartView.animate(xAxisDuration: 1.4, yAxisDuration: 1.4) case .spin: chartView.spin(duration: 2, fromAngle: chartView.rotationAngle, toAngle: chartView.rotationAngle + 360, easingOption: .easeInCubic) default: handleOption(option, forChartView: chartView) } } }