Coreplot 注释绘制在轴上

Coreplot annotations draw over the axis

这是一张我认为可以快速说明问题的图片。您只需从 git 中心下载示例,转到曲线散点图示例并点击一个点以显示点注释,然后只需滚动图表即可将这些点移出图表。

所以通常我们希望注释浮动在所有内容之上,但在我们设置 axisContraints 的时候,在这种情况下我们将它们设置为:

x.axisConstraints = [CPTConstraints constraintWithRelativeOffset:0.5];
y.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0];

我们希望我们添加的注释与网格线、绘图线和绘图点一样绘制。

我已经尝试了以下测试,看看会发生什么,但这没有帮助。

// reorder layer
[annotationHostLayer insertSublayer:annotation.contentLayer atIndex:0];
[annotationHostLayer setNeedsDisplay];

它会在注释上绘制网格线和轴,但注释仍然漂浮在图形之外。

我正在使用 coreplot 中的示例代码,这里是 github link,我一直在试验的图表是 "Curved Scatter Plot" 图表。

更新:我一直在为 plotArea 使用 maskToBorder 和 maskToBounds。如果轴是在图层边界内绘制的,那么似乎对边界的屏蔽会起作用,但事实并非如此。这会剪切 yaxis。我四处寻找其他剪辑代码,但无济于事。

隐藏位于所需区域之外的任何注释的内容层。使用绘图 space 委托来监视绘图 space 的更改并根据需要显示或隐藏注释。