Как создать диаграмму с датой / временем на нижней оси, используя iOS Библиотека диаграмм? - PullRequest
1 голос
/ 19 апреля 2020

В настоящее время я работаю с iOS Библиотечными диаграммами и у меня есть некоторые проблемы для реализации Временной шкалы для x Оси .

Ссылка на библиотеку: https://github.com/danielgindi/Charts

У меня есть Список объектов в качестве входных данных для Диаграмма.

let objectList : [Object] = fillObjectList()

class Object {
    var timeCreated : Date
    var value : Double
}

Я уже реализовал решение , где я просто использовал timeCreated.timeIntervalsince1970 в качестве значений для оси x. Но это не выглядит так здорово.

Так что если у некоторых из вас есть некоторый опыт использования iOS Библиотеки диаграмм, я надеюсь, что вы, ребята, сможете придумать решение этой проблемы. Заранее большое спасибо за помощь!

1 Ответ

0 голосов
/ 19 апреля 2020

Вам нужно создать подкласс 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[value]
            return dateFormatter.string(from: object.timeCreated)
        }   
        return ""
    }
}

и использовать форматированный с этим кодом

xAxis.valueFormatter = DateValueFormatter(objects: objectList)
...