0

我正在尝试创建一个带有文本和图像作为每个点的数据标签的图。我正在使用的代码如下所示;

//Point symbol
NSInteger symbolIndex = interval.symbolIndex;
UIImage *img = [Common getPointSymbol:symbolIndex];
CGRect imageRect = CGRectMake(0, 0 , 60, 50);
CPTBorderedLayer * imageLayer = [[CPTBorderedLayer alloc] initWithFrame:imageRect];
imageLayer.fill = [CPTFill fillWithImage:[CPTImage imageWithCGImage:[img CGImage] scale:img.scale]];

//Point text
CPTMutableTextStyle *dataLabelTextStyle = [CPTMutableTextStyle textStyle];
dataLabelTextStyle.color    = [CPTColor blackColor];
dataLabelTextStyle.fontSize = 12.0f;
dataLabelTextStyle.fontName = @"Helvetica";
CPTTextLayer *textLayer = [[CPTTextLayer alloc] initWithText:point.title style:dataLabelTextStyle];
[imageLayer addSublayer:textLayer];

return imageLayer;

这适用于最初在绘图上可见的数据点,但对于在起始绘图区域之外的点,仅绘制符号图像。如果缩小并强制重绘绘图,两个图层将再次出现。如果颠倒图层的顺序,然后只绘制文本图层,也会出现同样的问题。实际上,如果从情节之外开始,似乎不会渲染子层。

这是核心情节错误吗?是否可以将图层合并为一个以缓解此问题?

感谢您的帮助!

4

1 回答 1

0

CPTTextLayer是 的子类CPTBorderedLayer。您可以将背景填充添加到文本图层,然后使用填充属性将文本定位在图层内。

于 2012-08-07T00:56:02.280 回答