使用Daniel Gindi的Charts库在图表的x轴上显示时间

问题描述 投票:0回答:1

我正在使用Daniel Gindi的图表库:https://github.com/danielgindi/Charts

对于我的项目,我需要将x轴替换为仅显示小时和分钟(HH:mm)的时间。

我已经基于以下答案创建了带有扩展名的类:ios Charts 3.0 - Align x labels (dates) with plots

import UIKit
import Charts

class ChartXAxisFormatter: NSObject {
      fileprivate var dateFormatter: DateFormatter?
      fileprivate var referenceTimeInterval: TimeInterval?

      convenience init(referenceTimeInterval: TimeInterval, dateFormatter: DateFormatter) {
          self.init()
          self.referenceTimeInterval = referenceTimeInterval
          self.dateFormatter = dateFormatter
      }
}

extension ChartXAxisFormatter: IAxisValueFormatter {

     func stringForValue(_ value: Double, axis: AxisBase?) -> String {
           guard let dateFormatter = dateFormatter,
           let referenceTimeInterval = referenceTimeInterval
           else {
               return ""
           }

           let date = Date(timeIntervalSince1970: value * 3600 * 24 + referenceTimeInterval)
           return dateFormatter.string(from: date)
       }

}

我有一个图表视图,当我单击特定按钮(有单独的按钮用于显示温度/压力)时,显示压力或温度图表。

所以,我的问题是我无法弄清楚如何真正使用此类来转换我的x轴以显示时间?

有什么想法吗?谢谢!

swift xcode charts ios-charts
1个回答
0
投票

首先,我上面提到的类需要一些更新:

import UIKit

class ChartXAxisFormatter: NSObject {
      fileprivate var dateFormatter: DateFormatter?
      fileprivate var referenceTimeInterval: TimeInterval?

      convenience init(referenceTimeInterval: TimeInterval, dateFormatter: DateFormatter) {
          self.init()
          self.referenceTimeInterval = referenceTimeInterval
          self.dateFormatter = dateFormatter
      }
}

extension ChartXAxisFormatter: IAxisValueFormatter {

     func stringForValue(_ value: Double, axis: AxisBase?) -> String {

        let dateFormatterPrint = DateFormatter()
        dateFormatterPrint.dateFormat = "HH:mm"

        let date = Date(timeIntervalSince1970: value)
            return dateFormatterPrint.string(from: date)
       }

}

其次,我忘记了使用它实际上将xAxis值格式化程序连接到新类:

chartView.chart.xAxis.valueFormatter = ChartXAxisFormatter() 
© www.soinside.com 2019 - 2024. All rights reserved.