我在我的应用程序中使用 CorePlot,我想在 plotSymbol 上显示注释。我在最新的 0.9 版本的 CorePlot 的示例项目中没有找到任何代码。经过一些研究,我得出了这一点:
- (void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index
{
CPTLayerAnnotation *annot = [[CPTLayerAnnotation alloc]initWithAnchorLayer:graph];
CPTBorderedLayer * logoLayer = [[(CPTBorderedLayer *) [CPTBorderedLayer alloc] initWithFrame:CGRectMake(10,10,100,50)] autorelease];
CPTFill *fillImage = [CPTFill fillWithImage:[CPTImage imageForPNGFile:@"whatEver!"]];
logoLayer.fill = fillImage;
annot.contentLayer = logoLayer;
annot.rectAnchor=CPTRectAnchorTop;
[graph addAnnotation:annot];
}
但它显然不起作用....任何人都可以帮助我吗?
我的目标是在选定的绘图符号上获得注释,类似于 MKMapView 中的注释。
更新
这是一个 DatePlot,只是为了澄清事情,它在 x 轴上使用自 2001 年以来的时间间隔。
最佳答案
在 Core Plot 示例应用程序中有几个这样的例子。 Plot Gallery 应用程序(以及其他几个应用程序)中的梯度散点图使用此方法将文本标签附加到所选点。 Mac 版 CPTTestApp 中的点选择演示使用第二个散点图在所选点上绘制十字准线。
请记住还要在散点图上设置 plotSymbolMarginForHitDetection
属性。默认值为 0,这意味着您必须准确地击中点的中心才能注册触摸。
Core Plot中有两种注解。 CPTLayerAnnotation
锚定到给定的核心动画层(您的情况下的图形)。 CPTPlotSpaceAnnotation
锚定到绘图空间坐标(== 数据坐标)。您在下面的评论听起来像是您想使用绘图空间注释而不是图层注释。
关于objective-c - 在 CorePlot DatePlot (iOS) 中使用 CPTAnnotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664782/