2017-02-16 17 views
0

我在objc項目上使用ios Charts 3.0。我已經搜索了stackoverflow上的答案,但對我來說沒有正確的結果。我使用的地平線柱形圖和餅圖在我的項目和使用ios圖整數轉換

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

各軸以及與此自定義格式的嘗試:

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

兩種方式都沒有爲我工作。你們可以幫忙解決嗎?

Screen shots

+0

我沒有使用圖表,但你可以嘗試打印出值並檢查結果,而不是僅僅返回它們。然後你可以檢查probnlem是否在轉換中。 – Darkwonder

回答

2

試試下面的代碼。我在Swift上寫了它,並且不太瞭解Objective-C。我希望它有幫助。我使用這個BarChart,它的功能就像一個魅力。

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

在爲數據集添加此格式化程序後,它正在爲我工​​作。 :) 'dataSet.valueFormatter = [[ChartDefaultValueFormatter alloc] initWithFormatter:numFormatter];' –

0

您需要使用自定義格式類擴展IValueFormatter協議,

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 
    } 

} 

現在在代碼中使用自定義類初始化欄數值格式。它將刪除所有精度/保留值。

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