我正在尝试创建一个包含文本和图像作为每个点的数据标签的图。我正在使用的代码看起来像这样;
//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;
这适用于最初在绘图上可见的数据点,但对于在起始绘图区域之外的点,仅绘制符号图像。如果缩小并强制绘图重绘,则两个图层将再次出现。如果颠倒图层的顺序,则会出现同样的问题,然后只绘制文本图层。实际上,如果在情节之外开始,似乎不会渲染子图层。
这是一个核心情节错误吗?是否可以将图层合并为一个以缓解此问题?
感谢您的帮助!
答案 0 :(得分:0)
CPTTextLayer
是CPTBorderedLayer
的子类。您可以将背景填充添加到文本图层,然后使用填充属性将文本放置在图层中。