我正在使用iOS 5上的Core Plot 1.0在xy图形中的自定义刻度位置绘制带有散点图的图标。我在iPad 3上遇到了性能问题,它允许用户交互并水平滚动图形。我开始研究将CPTGraphHostingView的crashsLayers属性用作潜在的解决方案。启用它对我来说非常有效,除了一个我还无法解决的特定问题。设置为渲染图像的自定义轴标签将不会显示。我想知道是否有人对可能的原因有任何想法。据我所知,轴标签仍正确放置在正确的自定义刻度位置。我的外部代码的唯一区别是将collapsesLayers从“否”交换为“是”。

这是我构造轴标签的方式:

+ (CPTAxisLabel *)buildIconAxisLabelAtLocation:(CGFloat)location withImageNamed:(NSString *)imageName
{
CPTLayer *imageLayer = [[CPTLayer alloc] initWithFrame:CGRectMake(0, 0, 16, 16)];

UIImage *image = [UIImage imageNamed:imageName];

CALayer *imageSubLayer = [[CALayer alloc] init];
imageSubLayer.frame = imageLayer.frame;
imageSubLayer.contents = (id)image.CGImage;

[imageLayer addSublayer:imageSubLayer];

CPTAxisLabel *iconLabel = [[CPTAxisLabel alloc] initWithContentLayer:imageLayer];
iconLabel.offset = 8;
iconLabel.tickLocation = CPTDecimalFromCGFloat(location);
iconLabel.rotation = M_PI;

return iconLabel;
}


任何帮助表示赞赏。

最佳答案

核心图图中的每一层都应该是CPTLayer或子类。这对布局和绘图有许多影响。
核心绘图不会渲染图层contents。请使用CPTBorderedLayer进行图像填充。


我会尝试这样的事情:

UIImage *image = [UIImage imageNamed:imageName];
CPTImage *background = [CPTImage imageWithCGImage:image.CGImage];
CPTBorderedLayer *imageLayer = [[CPTBorderedLayer alloc] initWithFrame:CGRectMake(0, 0, 16, 16)];
imageLayer.fill = [CPTFill fillWithImage:background];

关于ios - 折叠时核心图不显示带有图像的轴标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12147342/

10-10 22:32