【发布时间】:2017-01-18 13:15:27
【问题描述】:
我很难将库 Charts(来自 Daniel Gindi)从版本 2 (Swift 2.3) 迁移到 3 (Swift 3)。
基本上,我不能让 x 标签(日期)与相应的图正确对齐。
这是我之前的版本 2:
在第 2 版中,我有第 7、8、10 和 11 天的值。 所以我在中间错过了一天,但标签与情节正确对齐。
这是我在第 3 版中的内容:
在版本 3 中,x 轴上的“标签”现在已被替换为双精度(对于日期,它是自 1970 年以来的 timeInterval),并通过格式化程序进行格式化。 所以,不可否认,现在图表更“正确”了,因为图表正确地推断了第 9 次的值,但我找不到如何将标签放在相应的图表下。
这是我的 x 轴代码:
let chartView = LineChartView()
...
let xAxis = chartView.xAxis
xAxis.labelPosition = .bottom
xAxis.labelCount = entries.count
xAxis.drawLabelsEnabled = true
xAxis.drawLimitLinesBehindDataEnabled = true
xAxis.avoidFirstLastClippingEnabled = true
// Set the x values date formatter
let xValuesNumberFormatter = ChartXAxisFormatter()
xValuesNumberFormatter.dateFormatter = dayNumberAndShortNameFormatter // e.g. "wed 26"
xAxis.valueFormatter = xValuesNumberFormatter
这是我创建的 ChartXAxisFormatter 类:
import Foundation
import Charts
class ChartXAxisFormatter: NSObject {
var dateFormatter: DateFormatter?
}
extension ChartXAxisFormatter: IAxisValueFormatter {
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
if let dateFormatter = dateFormatter {
let date = Date(timeIntervalSince1970: value)
return dateFormatter.string(from: date)
}
return ""
}
}
所以,这里的值是正确的,格式是正确的,图表的形状是正确的,但是标签与对应的图对齐不好。 感谢您的帮助
【问题讨论】:
-
我能够使用 Charts 3.0.0 和 Charts 3.0.1 进行重现。同时,我在一个不受这些问题困扰的单独项目中使用了 Charts 3.0.0 的代码。也许图表设置的某些组合会显示此错误?
-
我收到了 Charts Github repo 的回复:显然,在 x 轴上使用 时间间隔 时会发生这种情况,因为 Charts 使用插值来确定要显示的标签。
-
错位的原因是 xAxis.avoidFirstLastClippingEnabled = true
标签: swift ios-charts