在CorePlot DatePlot(iOS)中使用CPTAnnotation

3
我在我的应用程序中使用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轴上工作。

1个回答

4
在 Core Plot 的示例应用程序中有几个这样的例子。Plot Gallery 应用程序中的渐变散点图(以及其他一些应用程序)使用此方法将文本标签附加到所选点上。CPTTestApp 的 Mac 版本中的点选择演示使用第二个散点图在所选点上绘制十字线。
记得在散点图上设置 plotSymbolMarginForHitDetection 属性。默认值为 0,这意味着您必须精确地击中点的中心才能注册触摸。
Core Plot 中有两种类型的注释。CPTLayerAnnotation 锚定到给定的 Core Animation 图层(在您的情况下是图表)。CPTPlotSpaceAnnotation 锚定到绘图空间坐标(== 数据坐标)。您下面的评论听起来好像想使用绘图空间注释而不是图层注释。

我之前已经尝试过那段代码,但它并没有起作用!但现在我知道原因了:我正在使用一个日期图,它使用自2001年以来的时间间隔来显示日期。也许这些间隔的高数字给注释一个完全错误的坐标,这就是为什么我看不到它的原因? - JonasG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接