如何使用 iOS 图表库在底部轴上创建带有日期/时间的图表?

chr*_*epe 5 charts xcode ios swift ios-charts

我目前正在使用iOS Library Charts并且在为x Axis实现TimeLine 时遇到了一些问题。

图书馆链接:https : //github.com/danielgindi/Charts

我有一个对象列表作为图表的输入。

let objectList : [Object] = fillObjectList()

class Object {
    var timeCreated : Date
    var value : Double
}
Run Code Online (Sandbox Code Playgroud)

我已经实现了一个解决方案,我只是将timeCreated.timeIntervalsince1970用作 x 轴的值。但这看起来不是那么好。

所以如果你们有使用iOS Charts Library的经验,希望你们能想出解决这个问题的办法。非常感谢您的帮助!

aiw*_*una 6

您需要创建 IAxisValueFormatter 的实现类,如下所示

注意:我没有编译它,所以可能需要一些修正

public class DateValueFormatter: NSObject, IAxisValueFormatter {
    private let dateFormatter = DateFormatter()
    private let objects:[Object]
    
    init(objects: [Object]) {
        self.objects = objects
        super.init()
        dateFormatter.dateFormat = "dd MMM HH:mm"
    }
    
    public func stringForValue(_ value: Double, axis: AxisBase?) -> String {
        if value >= 0 && value < objects.count{
            let object = objects[Int(value)]
            return dateFormatter.string(from: object.timeCreated)
        }   
        return ""
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用此代码格式化

xAxis.valueFormatter = DateValueFormatter(objects: objectList)
Run Code Online (Sandbox Code Playgroud)

编辑:您可以在这个存储库中看到我尝试使用图表库的一些示例