我有以下Xaxis格式化程序:
extension ChartXAxisFormatter: IAxisValueFormatter {
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
guard let referenceTimeInterval = referenceTimeInterval,
let selectedFrame = selectedFrame
else {
return ""
}
let date = Date(timeIntervalSince1970: value * 3600 * 24 + referenceTimeInterval)
if(selectedFrame == .week) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "E"
return dateFormatter.string(from: date).capitalized
}
else if(selectedFrame == .month) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd"
return dateFormatter.string(from: date).capitalized
}
else {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM"
return dateFormatter.string(from: date).capitalized
}
}
}
我这样称呼它:xAxis.valueFormatter = ChartXAxisFormatter(referenceTimeInterval: referenceTimeInterval, selectedFrame: selectedFrame)
然而,这只是格式化值,它实际上并不决定什么值出现在xAxis中。
当我运行它时,我得到这样的结果:五五六六七
我可以通过设置xAxis.granularity = 1
来解决这个问题,但是我得到了5 6而没有7。
究竟是什么决定了什么样的价值观出现?我怎样才能得到唯一的值?
例如,如果我可以访问它使用的值,我可以调用像Array(Set(array))
这样的值
1条答案
按热度按时间0yycz8jy1#
请参阅图表库中的
XAxisRenderer
。它有一个computeAxisValues
函数,实际计算轴上显示的值。轴的entries
数组存储将显示的值。如果您想格式化它,您必须继承XAxisRenderer并覆盖
computeAxisValues
函数