在 Mac 应用程序中,我试图放大 x 轴上当前可见标记的部分。
我正在使用下面的一些逻辑来计算 x 位置:
private func getZoomXPosition() -> CGFloat {
var x = 0.0
if let highlight = self.chartView.highlighted.first {
print("highlight x=\(highlight.x) drawX=\(highlight.drawX)")
let pos = chartView.getMarkerPosition(highlight: highlight)
x = pos.x
}
print("zoom to x: \(x)")
return x
}
如果存在高亮(然后我们在该位置显示一个标记)
然后我打电话给:
self.chartView.zoom(scaleX: 1.5, scaleY: 1.0, x: x, y: 0)
执行缩放到该 x 位置。这似乎主要工作,除非你达到某个缩放级别,下一次放大似乎缩放到错误的点。
clicked ChartDataEntry, x: 3125.0, y 393.0
highlight x=3125.0 drawX=286.3808824269045
zoom to x: 286.3808824269045
clicked ChartDataEntry, x: 3125.0, y 393.0
highlight x=3125.0 drawX=272.58693711440446
zoom to x: 272.58693711440446
clicked ChartDataEntry, x: 3125.0, y 393.0
highlight x=3125.0 drawX=262.2414781300295
zoom to x: 262.2414781300295
clicked ChartDataEntry, x: 3125.0, y 393.0
highlight x=3125.0 drawX=258.36193101088895
zoom to x: 258.36193101088895
clicked ChartDataEntry, x: 3125.0, y 393.0
highlight x=3125.0 drawX=259.0893460957275
zoom to x: 259.0893460957275
clicked ChartDataEntry, x: 3125.0, y 393.0
highlight x=3125.0 drawX=258.3391992894881
zoom to x: 258.3391992894881
clicked ChartDataEntry, x: 3125.0, y 393.0
highlight x=3125.0 drawX=260.06219273506895
zoom to x: 260.06219273506895
clicked ChartDataEntry, x: 3125.0, y 393.0
highlight x=3125.0 drawX=252.83369679540647
zoom to x: 252.83369679540647
clicked ChartDataEntry, x: 3125.0, y 393.0
highlight x=3125.0 drawX=303.74376780794955
zoom to x: 303.74376780794955
正如您从日志中看到的那样,第 9 次放大总是导致问题。
3月18日更新:
我已经更新了上面的方法以包含打印件。
所以我在图表上找到当前突出显示的位置
chartView.hightlighted.first
然后我将其转换为图表上的实际点
chartView.getMarkerPosition(highlight: highlight
然后终于打电话
cahrtView.zoom()
x 和 x 比例因子 1.5.
直到第 8 级放大(通过单击放大按钮),它都可以正常工作。第 9 个总是放大到图表的错误部分。