ios 图表整数转换

ios charts integer convert

我在 objc 项目上使用 ios Charts 3.0。我在 Whosebug 上搜索了答案,但没有找到正确的结果。我在我的项目中使用水平条形图和饼图并尝试使用

yAxis.valueFormatter = NSNumberFormatter()
yAxis.valueFormatter.minimumFractionDigits = 0

对于每个轴以及自定义格式化程序:

- (NSString *)stringForValue:(double)value
                        axis:(ChartAxisBase *)axis
{
    return [@((NSInteger)value) stringValue];
}

这两种方式都不适合我。你们能帮忙解决一下吗?

试试下面的代码。我在Swift写的,知道的不多Objective-C。我希望它有所帮助。我正在将它用于 BarChart,它非常有用。

let fmt = NumberFormatter()
fmt.numberStyle = .decimal
fmt.maximumFractionDigits = 0
fmt.groupingSeparator = ","
fmt.decimalSeparator = "."
yAxis.valueFormatter = DefaultAxisValueFormatter.init(formatter: fmt)

您需要使用自定义格式化程序扩展 IValueFormatter 协议 class,

import Foundation
import Charts

// Custom value formatter class
class BarValueFormatter : NSObject, IValueFormatter {

    // This method is  called when a value (from labels inside the chart) is formatted before being drawn.
    func stringForValue(_ value: Double,
                        entry: ChartDataEntry,
                        dataSetIndex: Int,
                        viewPortHandler: ViewPortHandler?) -> String {
        let digitWithoutFractionValues = String(format: "%.0f", value)
        return digitWithoutFractionValues
    }

}

现在在您的代码中使用自定义 class 初始化条形值格式化程序。它将删除所有 precision/franction 值。

let chartDataSet = BarChartDataSet(values: <dataSetValues>, label: <stringValue>)
let valueFormatter = BarValueFormatter()
chartDataSet.valueFormatter = valueFormatter