将 coreplot 图表点转换为 superview 的坐标 space

Convert coreplot chart point into superview's coordinate space

我们正在使用 CorePlot 绘制图表。在 yAxis 中我们绘制温度。

给定一个温度值,我们想在UIViewController的坐标space.

中找到对应于该温度的y coordinate

我们的视图层次结构按以下方式组织:

_ UIViewController's main view (self.view)
 \_ UIScrollView
   \_ ChartView

阅读文档,我们发现 -[CTPAxis viewPointForCoordinateDecimalNumber:] 应该完全符合我们的要求。

现在,由于该方法会 return ChartView 坐标系中的 Y 位置,我们使用 -[UIView convertPoint:toView:] 进行从 ChartView 到 UIScrollView,然后到 UIViewController 主视图的转换:

//self is the UIViewController
CGPoint *originalPoint = [self.temperatureAxis viewPointForCoordinateDecimalNumber:temperature];
CGPoint *scrollViewConvertedPoint = [self.chartView convertPoint:originalPoint toView:self.scrollView];
CGPoint *finalPoint = [self.scrollView convertPoint:scrollViewConvertedPoint toView:self.view];

使用这种方法,我们得到了不正确的值,如下图所示。

提前致谢。

originalPoint在绘图区域的坐标space中。在进行视图转换之前将其转换为图表的坐标 space。

CGPoint graphPoint = [graph convertPoint:originalPoint 
                               fromLayer:graph.plotAreaFrame.plotArea];