swift iOS图表:价值观实际上来自哪里?

icomxhvb  于 2023-06-21  发布在  Swift
关注(0)|答案(1)|浏览(113)

我有以下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))这样的值

0yycz8jy

0yycz8jy1#

请参阅图表库中的XAxisRenderer。它有一个computeAxisValues函数,实际计算轴上显示的值。轴的entries数组存储将显示的值。
如果您想格式化它,您必须继承XAxisRenderer并覆盖computeAxisValues函数

相关问题