我正在尝试创建一个图,其中包含文本和图像作为每个点的数据标签。我使用的代码如下所示;
//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;这适用于最初在绘图上可见的数据点,但对于起始绘图区域之外的点,仅绘制符号图像。如果缩小并强制绘图重绘,两个图层都将再次出现。如果颠倒图层的顺序,然后只绘制文本图层,也会出现同样的问题。实际上,如果从绘图之外开始,子层似乎不会被渲染。
这是一个核心图错误吗?有没有可能将层合并成一个层来缓解这个问题?
感谢您的帮助!
发布于 2012-08-07 08:56:02
CPTTextLayer是CPTBorderedLayer的一个子类。可以将背景填充添加到文本图层,然后使用填充属性在图层中定位文本。
https://stackoverflow.com/questions/11827476
复制相似问题