将 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];
我们正在使用 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];