0

core-plot フレームワークを使用してグラフを描画しており、ユーザーが polt-symbols をタップするとテキストを表示しています。しかし、私の問題は、テキストがプロットシンボルに重なっているということです。この問題を克服する方法.私を助けてください.

ここに画像の説明を入力

私のコードはこのようなものです

- (void) scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index{
if ([plot.identifier isEqual:@"Green Plot"]) {
    selectedLineIndex1 = index;
    selectedLineIndex2 = -1;
    [graph reloadData];   
}
else if ([plot.identifier isEqual:@"Blue Plot"]) {
    selectedLineIndex1 = -1;
    selectedLineIndex2 = index;
    [graph reloadData];   

} }

- (CPTLayer *) dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index {
// Setup a style for the annotation text
CPTMutableTextStyle *hitAnnotationTextStyle = [CPTMutableTextStyle textStyle];
hitAnnotationTextStyle.color    = [CPTColor blackColor];
hitAnnotationTextStyle.fontSize = 18.0f;
hitAnnotationTextStyle.fontName = @"Verdana-Bold";

// Now add the annotation text to the plot
CPTTextLayer *selectedText = [CPTTextLayer layer];
selectedText.textStyle = hitAnnotationTextStyle;
selectedText.position = CGPointMake(0.0,40.0f);

if (index == selectedLineIndex1 && [plot.identifier isEqual:@"Green Plot"]) {
    selectedText.text = [NSString stringWithFormat:@"%.1f",[[dataForPlot objectAtIndex:index] floatValue]];
}
else if (index == selectedLineIndex2 && [plot.identifier isEqual:@"Blue Plot"]) {
    selectedText.text = [NSString stringWithFormat:@"%.1f",[[yPoints objectAtIndex:index] floatValue]];
}
return selectedText;}

間違いはありますか、それとも他の方法はありますか。サンプルを提供してください。

前もって感謝します。

4

1 に答える 1

1

折れ線グラフを作成していたときに、折れ線グラフにlabelOffSetを追加して解決策を見つけました。

サンプルコード。

CPTScatterPlot *boundLinePlot2 = [[[CPTScatterPlot alloc] init] autorelease];
CPTMutableLineStyle *lineStyle2 = [CPTMutableLineStyle lineStyle];
lineStyle2.miterLimit = 1.0f;
lineStyle2.lineWidth = 3.0f;
lineStyle2.lineColor = [CPTColor redColor];
boundLinePlot2.dataLineStyle = lineStyle2;
boundLinePlot2.identifier = @"Green Plot";
boundLinePlot2.dataSource = self;
boundLinePlot2.delegate = self;

私の問題が解決されるように、この線を折れ線グラフに追加します。

boundLinePlot2.labelOffset = 10.0f;
boundLinePlot2.labelRotation = M_PI_4;
于 2012-11-30T07:26:08.233 に答える