2011-10-05 39 views
3

我在我的應用程序中使用CorePlot,並且我想通過plotSymbol顯示一個註釋。我還沒有在最新的0.9版本的CorePlot的示例項目中找到任何代碼。經過一些研究,我已經到了這一步:在CorePlot DatePlot(iOS)中使用CPTAnnotation

- (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軸上。

回答

4

在Core Plot示例應用程序中有幾個這樣的例子。 Plot Gallery應用程序(以及其他幾個應用程序)中的漸變散點圖使用此方法將文本標籤附加到所選點。 Mac版CPTTestApp中的點選擇演示使用第二個散點圖在所選點上繪製十字線。

還記得在散點圖上設置plotSymbolMarginForHitDetection屬性。默認值爲0,這意味着您必須完全按下該點的中心以註冊觸摸。

Core Plot中有兩種類型的註釋。一個CPTLayerAnnotation被錨定到一個給定的核心動畫層(你的案例中的圖形)。將一個CPTPlotSpaceAnnotation錨定到繪圖空間座標(==數據座標)。您的評論如下所示,聽起來就像您想使用情節空間註釋而不是圖層註釋。

+0

我已經試過這個代碼,它沒有工作!但是現在我知道爲什麼:我使用的是日期圖,即自2001年以來使用timeInvervals顯示日期。也許大量的間隔給註解一個完全錯誤的座標,這就是爲什麼我看不到它? – JonasG