iOS Графики Линия диаграммы Отсутствует метка последней оси - PullRequest
0 голосов
/ 29 января 2020

Я создал линейную диаграмму с модулем iOS Charts.

Во-первых, у меня есть массив пользовательских объектов TestBalance, которые содержат dateString (которая преобразуется в Date) и сумму ( Двухместный). В настоящее время я создал жестко запрограммированный массив, подобный этому.

let balanceTestArray : [TestBalance] = [TestBalance(dateString: "01/01/2019", amount: 1920.24), //More elements... , TestBalance(dateString: "28/01/2019", amount: 844.24)]

I, а затем go на создание массива ChartDataEntry для данных графика.

let now = Date().timeIntervalSince1970
let dayInterval: TimeInterval = 3600 * 24

guard let firstDate = balanceTestArray.first else {return}
guard let lastDate = balanceTestArray.last else {return}
guard let firstDateDateValue = firstDate.date else {
  print("No Date")
  return
}
guard let lastDateDateValue = lastDate.date else {
  print("No Date")
  return
}

let from = firstDateDateValue.timeIntervalSince1970
let to = lastDateDateValue.timeIntervalSince1970 + dayInterval
var counter = 0
let values = stride(from: from, to: to, by: dayInterval).map { (x) -> ChartDataEntry in
  let y = balanceTestArray[counter].amount
  counter += 1
  return ChartDataEntry(x: x, y: Double(y))
}

Выше код, кажется, работает отлично, строит все точки и метки осей примерно так ...

Снимок экрана графика из iOS simulator

Я настроил свой xAxis следующим образом:

let xAxis = lineChartView.xAxis
xAxis.labelPosition = .bottom
xAxis.labelFont = UIFont(name: "Montserrat-Regular", size: 10)!
xAxis.labelTextColor = UIColor(hex: "#A2A2A2FF")!
xAxis.drawAxisLineEnabled = false
xAxis.drawGridLinesEnabled = false
xAxis.granularity = 1.0
xAxis.centerAxisLabelsEnabled = false
xAxis.avoidFirstLastClippingEnabled = true

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE dd"

let xValuesNumberFormatter = ChartXAxisFormatter()
xValuesNumberFormatter.dateFormatter = dateFormatter
xAxis.valueFormatter = xValuesNumberFormatter

Именно здесь начинают проявляться мои 2 основные проблемы.

  1. Первая проблема - метки оси не совпадают с данными, мне кажется, что интервал не совпадает? Вот изображение, увеличенное до начала данных. Как я могу исправить интервал, чтобы максимизировать данные? Я не хочу, чтобы для каждого значения была более 1-дневная метка, тогда как при увеличении есть текущие 2. Любые решения?

Проблема выравнивания

Второй вопрос, в правой части графика последняя дата, в данном случае 28 января не отображается как метка, а данные отображаются? Как заставить ярлык появляться?
...