我正在使用核心图框架绘制图形,当用户点击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;}
是否有任何错误告诉我,或者有任何其他方式只是建议我请提供一些样品。
提前致谢。
答案 0 :(得分: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;