CPTPlotSpaceAnnotation与图像无法在设备上工作,在模拟器中工作

时间:2012-01-06 20:45:22

标签: iphone

我尝试将图片注释添加到条形图中。它在iOS模拟器中工作正常,但图像注释未在设备上显示。我正在使用Xcode 4.2。在两个设备上测试,一个是iOS 4.3,另一个是iOS5.0.1。

我正在使用带有Apple LLVM 3.0编译器的armv7。我知道图像文件名是区分大小写的,它是正确的。

我试过的代码如下:

CPTPlotSpaceAnnotation *imageAnnotation;
CGRect imageRect = CGRectMake(50, 50 ,30, 30);
CPTLayer *newImagelLayer = [[CPTLayer alloc] initWithFrame:imageRect];
newImagelLayer.contents = (id)[[UIImage imageNamed:@"test.png"] CGImage];
imageAnnotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:plotSpace anchorPlotPoint:nil];
imageAnnotation.contentLayer = newImagelLayer;
[barPlot addAnnotation:imageAnnotation];
[newImagelLayer release];
[imageAnnotation release];

这是一个已知问题吗?我不明白为什么它在模拟器中有效但在设备上无效。

3 个答案:

答案 0 :(得分:1)

我认为您可以通过在CPTBorderedLayer上使用CPTFill来实现此目的。

CPTPlotSpaceAnnotation *imageAnnotation;
CGRect imageRect = CGRectMake(50, 50 ,30, 30);
CPTBorderedLayer *newImagelLayer = [[CPTBorderedLayer alloc] initWithFrame:imageRect];
newImagelLayer.fill = [CPTFill fillWithImage:[CPTImage imageWithCGImage:[[UIImage imageNamed:@"dot-selector.png"] CGImage]]];
imageAnnotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:plotSpace anchorPlotPoint:nil];
imageAnnotation.contentLayer = newImagelLayer;
[barPlot addAnnotation:imageAnnotation];
[newImagelLayer release];
[imageAnnotation release];

答案 1 :(得分:0)

可能是因为您尚未向目标添加test.png。这在模拟器中正常工作,但如果资源未添加到目标,则在设备上,它不会被复制到生成的ipa文件中。

如果列出了test.png,请检查复制捆绑资源下目标的构建阶段标签,如果不是,则可以拖放它。

答案 2 :(得分:0)

资产名称恰好是“test.png”,OSX中的文件系统是不区分大小写的,iOS是。这将导致它适用于模拟器,而不适用于设备。