将多个注释添加到烛台图表

时间:2013-12-09 16:22:34

标签: ios objective-c core-plot

我有一个金融时间序列的蜡烛图。假设图表上有100个蜡烛,根据某些标准,我将20个点列入短注(即显示相应蜡烛附近的图像)。所有20个点应同时进行注释。可以添加单个注释,如下所示:

//the image to display 
UIImage *flag = [UIImage imageNamed:@"flag.png"];
CPTImage *flagImage = [CPTImage imageWithCGImage:flag.CGImage
                                           scale:flag.scale];

CPTBorderedLayer *borderedLayer = [[CPTBorderedLayer alloc] init];

CPTMutableLineStyle *blackLineStyle = [CPTMutableLineStyle lineStyle];
[blackLineStyle setLineColor:[CPTColor blackColor]];
[blackLineStyle setLineWidth:1.0f];

[borderedLayer setBorderLineStyle:blackLineStyle];

[borderedLayer setFill:[CPTFill fillWithImage:flagImage]];

//the 'i' in the next statement is from a 'for' loop iterating over NSArrays: xCoordinates & yCoordinates, containing the corresponding coordinates for short-listed data points
NSArray *anchorPoint = [NSArray arrayWithObjects:[xCoordinates objectAtIndex:i], [yCoordinates objectAtIndex:i], nil];

CPTPlotSpaceAnnotation *alertAnnotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:[[[self hostView] hostedGraph] defaultPlotSpace]
                                                                                anchorPlotPoint:anchorPoint];
[alertAnnotation setContentLayer:borderedLayer];
[alertAnnotation setDisplacement:CGPointMake(0.0f, 10.0f)];

[[[[self hostView] hostedGraph] plotAreaFrame] addAnnotation:alertAnnotation];

问题是一次只能托管一个CPTPlotSpaceAnnotation,所以每次循环并执行addAnnotation时:再次丢失先前的注释。根据我的研究,它认为必须分别为每个注释添加CPTLayer(或子类)。即使经过多次尝试,我也无法在图表上正确添加图层和相应的图像注释。我没有成功添加多个CPTLayer(使用addSublayer调用:)但它们不是Plot-space的一部分(即它们没有缩放或平移图表,这是我所希望的行为)

有人可以帮忙解决这个问题吗?如果需要,我很乐意提供有关问题/代码的更多信息。

1 个答案:

答案 0 :(得分:0)

您可以添加到图层的注释数量没有限制。设置注释内容图层的大小以确保它可见。使用-initWithFrame:创建或稍后设置bounds