我正在使用iOS Charts
框架在我的应用程序上显示条形图。
我的leftAxisFormatter
就是这样
let leftAxisFormatter = NumberFormatter()
leftAxisFormatter.minimumFractionDigits = 0
leftAxisFormatter.maximumFractionDigits = 2
leftAxisFormatter.positivePrefix = "$"
我的数据集是这样的
0 : ChartDataEntry, x: 0.0, y 0.0
1 : ChartDataEntry, x: 1.0, y 7.6
2 : ChartDataEntry, x: 2.0, y 0.0
3 : ChartDataEntry, x: 3.0, y 0.0
4 : ChartDataEntry, x: 4.0, y 48.07
5 : ChartDataEntry, x: 5.0, y 107.26
6 : ChartDataEntry, x: 6.0, y 0.0
我正在使用BalloonMarker
显示值,当我从图表中点击一个条形,但是标记中的值始终只显示一个小数位时,我尝试使用NumberFormatter
,但是没有运气。
请参考下面的屏幕截图,其中我想显示2个小数位作为标记中显示的值,根据我的数据集,这里应该是107.26。
谢谢
答案 0 :(得分:2)
您可以创建自定义Markers。为简单起见,您可以subClass
BalloonMarker
并覆盖setLabel
以格式化该值,然后再传递给super's
setLabel
,
class MyCustomBaloon: BalloonMarker {
override func setLabel(_ newLabel: String) {
let value = String(format: "$%.2f", Double(newLabel) ?? 0.0)
super.setLabel(value)
}
}
用法
let marker = MyCustomBaloon(color: UIColor(white: 180/255, alpha: 1),
font: .systemFont(ofSize: 12),
textColor: .white,
insets: UIEdgeInsets(top: 8, left: 8, bottom: 20, right: 8))
marker.chartView = chartView
marker.minimumSize = CGSize(width: 80, height: 40)
chartView.marker = marker
结果
答案 1 :(得分:0)
如果有2个以上的小数位数,则数字格式化程序将返回2位数的小数位数,否则将返回该数字具有的相同小数位数。例如,请参见以下输出,
let leftAxisFormatter = NumberFormatter()
leftAxisFormatter.minimumFractionDigits = 0
leftAxisFormatter.maximumFractionDigits = 2
leftAxisFormatter.positivePrefix = "$"
let number = 82.2343
print(leftAxisFormatter.string(for: number))
Optional("$82.23")
let number = 82
print(leftAxisFormatter.string(for: number))
Optional("$82")
let number = 82.1
print(leftAxisFormatter.string(for: number))
Optional("$82.1")
因此,如果您始终希望获得2位数的分数,则只需将最小值设置为2,
leftAxisFormatter.minimumFractionDigits = 2
现在所有输出将是2位,如下所示,
Optional("$82.23")
Optional("$82.00")
Optional("$82.10")