我有一个金融时间序列的蜡烛图。假设图表上有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的一部分(即它们没有缩放或平移图表,这是我所希望的行为)
有人可以帮忙解决这个问题吗?如果需要,我很乐意提供有关问题/代码的更多信息。
答案 0 :(得分:0)
您可以添加到图层的注释数量没有限制。设置注释内容图层的大小以确保它可见。使用-initWithFrame:
创建或稍后设置bounds
。