ios-charts:轴和网格线间歇性丢失

时间:2018-06-15 22:41:00

标签: ios ios-charts

我正在使用danielGindi的iOS图表来显示折线图。期望的行为是显示左轴,x轴和水平网格线,但是,有时缺少一个或两个轴和/或缺少一个或多个网格线。

Screenshot showing missing x and y axes and missing gridline at 6% row

我的代码如下。

class LineChartViewController: UIViewController {
    let timeIntervalCount = 15

    @IBOutlet weak var lineChartView: LineChartView!
    override func viewDidLoad() {
        super.viewDidLoad()
        configureChart()
        setChartValues()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func randomizeTapped(_ sender: UIButton) {
        let count = Int(arc4random_uniform(20) + 3)
        setChartValues(count)
    }

    @IBAction func configureTapped(_ sender: UIButton) {
        configureChart()
        lineChartView.setNeedsDisplay()
    }

    @IBAction func closeTapped(_ sender: UIButton) {
        dismiss (animated: true, completion: nil)
    }

    fileprivate func configureChart () {
        lineChartView.xAxis.labelPosition = .bottom
        lineChartView.xAxis.drawGridLinesEnabled = false
        lineChartView.xAxis.avoidFirstLastClippingEnabled = true
        lineChartView.xAxis.axisLineColor = UIColor.lightGray
        //lineChartView.xAxis.setLabelCount(timeIntervalCount, force: true)
        lineChartView.xAxis.avoidFirstLastClippingEnabled = true

        lineChartView.leftAxis.enabled = true
        lineChartView.leftAxis.axisLineColor = UIColor.lightGray
        lineChartView.leftAxis.drawAxisLineEnabled = true
        lineChartView.leftAxis.drawGridLinesEnabled = true
        lineChartView.leftAxis.gridColor = UIColor.lightGray
        lineChartView.leftAxis.axisMinimum = 0
        lineChartView.leftAxis.valueFormatter = self

        lineChartView.rightAxis.enabled = false
        lineChartView.legend.enabled = false
        lineChartView.chartDescription?.enabled = false
    }

    fileprivate func setChartValues (_ count: Int = 15) {
        let top = 23
        let bottom = 8
        let values = (bottom..<top).map { (i) -> ChartDataEntry in
            let val = Double(arc4random_uniform(UInt32(count)) + 3)
            return ChartDataEntry(x: Double(i), y: val)
        }

        let set1 = LineChartDataSet(values: values, label: "DataSet 1")
        set1.colors = [UIColor.orange]
        set1.drawValuesEnabled = false
        set1.drawCirclesEnabled = false
        let data = LineChartData(dataSet: set1)

        self.lineChartView.data = data
    }

}

extension LineChartViewController: IAxisValueFormatter {
    func stringForValue(_ value: Double,
                        axis: AxisBase?) -> String {
        return String(format: "%.0f", value) + "%"
    }
}

0 个答案:

没有答案