我在我的应用程序中使用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,仅用于澄清问题,并且自2001年以来在x轴上按时间间隔运行。
最佳答案
Core Plot示例应用程序中有几个示例。 Plot Gallery应用程序(以及其他几个应用程序)中的梯度散点图使用此方法将文本标签附加到所选点。 Mac版本的CPTTestApp中的点选择演示使用第二个散点图在所选点上绘制十字准线。
记住也要在散点图上设置plotSymbolMarginForHitDetection
属性。默认值为0,这意味着您必须精确地击中该点的中心才能注册触摸。
核心图解中有两种类型的注释。 CPTLayerAnnotation
锚定到给定的Core Animation层(在您的情况下为图形)。 CPTPlotSpaceAnnotation
锚定到绘图空间坐标(==数据坐标)。您在下面的注释听起来像您想使用打印空间注释而不是图层注释。