iOS Charts ValueFormatter

后端 未结 4 1201
天命终不由人
天命终不由人 2021-02-15 19:04

I am using iOS charts plugin (line chart) and wish to style the chart values (the number above each point) to a decimal number.

The value is a double, but charts by defa

4条回答
  •  孤独总比滥情好
    2021-02-15 19:16

    Almost there, just need to add the following class:

    class ChartValueFormatter: NSObject, IValueFormatter {
        fileprivate var numberFormatter: NumberFormatter?
    
        convenience init(numberFormatter: NumberFormatter) {
            self.init()
            self.numberFormatter = numberFormatter
        }
    
        func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String {
            guard let numberFormatter = numberFormatter
                else {
                    return ""
            }
            return numberFormatter.string(for: value)!
        }
    }
    

    Now use this as the number formatter:

    let numberFormatter = NumberFormatter()
    numberFormatter.numberStyle = .decimal
    numberFormatter.locale = Locale.current
    let valuesNumberFormatter = ChartValueFormatter(numberFormatter: numberFormatter)
    lineChartDataSet.valueFormatter = valuesNumberFormatter
    lineChartDataSet.valueFont = lineChartDataSet.valueFont.withSize(chartFontPointSize)
    

提交回复
热议问题