objective-c - 在 CorePlot DatePlot (iOS) 中使用 CPTAnnotation

标签 objective-c ios cocoa-touch annotations core-plot

我在我的应用程序中使用 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/

相关文章:

ios - 在另一个 View Controller 上呈现透明 View Controller

ios - UITableView框架基于单元格数

iphone - 如何在 NSArray 中获取索引?

objective-c - 如何在我的项目中创建第二个目标来为 iOS 创建一个预填充的数据库

ios - swift ,线程 1 : EXC_BAD_INSTRUCTION error

iOS7 Sprite Kit如何在SKSpriteNode上获得长按或其他手势?

ios - 以编程方式创建 UITableViewController 时使用 Storyboard

ios - 组合框架更新 UI 无法正常工作

objective-c - 根据另一个字段的值设置文本字段的值

cocoa-touch - 等到另一种声音结束后再播放新声音