Вопрос:
Я использую библиотеку диаграмм (https://github.com/danielgindi/Charts/) в своем проекте iOS, и мне нужно добавить поддержку языков RTL, что означает отражение диаграммы, еслиязык устройства - RTL.
Объяснение:
В этом примере мне нужно отразить график подсвечника. Это график в реальном времени, который означает, что он обновляется, скажем, каждыйминута, когда поступают новые данные.
Внешний вид и поведение диаграммы в макете слева направо (GIF, кликабельно)
На приведенном выше снимке экрана видно, что каждое 10-е значениеимеет метку оси X под ним, если после последней метки на оси x меньше 10 значений - дополнительные метки не отображаются. Когда в наборе данных больше элементов, чем количество записей, которые я хочу отобразитьдиаграмма диаграмма перемещается и держит все метки оси X должным образом выровненными со своими значениями.
Проблемы:
В этой библиотеке нет поддержки RTL, поэтому я пытаюсьреализоватьt RTL макет для диаграммы сам, и есть следующие проблемы:
- Нет способа отобразить набор данных в обратном порядке.Мое решение состоит в том, чтобы вручную повернуть его перед добавлением в график.Если появляется новое значение - я просто добавляю его в начало текущего набора данных и перемещаю график, вызывая
chartView.movieViewToX(leftIndex)
.Не лучший способ добиться этого, но это работает. - То же самое, что и выше, но с метками оси X.Это предопределенный массив, поэтому каждая запись имеет свою предопределенную метку.Я также переворачиваю этот массив, чтобы правильно сопоставить метки оси X с набором данных.Опять же, когда приходит новая запись - я просто добавляю новую метку оси X в начало массива.
- Самая проблемная часть - добиться того же поведения оси X.Даже если я делаю вещи, упомянутые выше, метки оси X все еще рисуются с левой стороны диаграммы, посмотрите это GIF (кликабельно) .Поэтому, если я добавлю новую запись в набор данных, она будет иметь соответствующую метку оси X, но остальные метки останутся на своих местах и изменят свои значения в соответствии с новыми записями выше.
Я просмотрел страницу переполнения стека и «проблемы» в репозитории библиотеки github и нашел похожие вопросы, но не нашел решения, которое бы мне помогло.Кроме того, попытался внести изменения в XAxisRenderer, но безуспешно.
Поэтому мой вопрос заключается в том, как добиться такого же внешнего вида и поведения на «зеркальном» графике?