你们能说出为什么这段代码没有显示图像吗?
CALayer *layerBack = [CALayer layer];
addedObject = [[UIImage alloc]initWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:[NSString stringWithFormat: @"%@%d", PREFIX, number] ofType:@"png"]];
layerBack.bounds=CGRectMake(0.0f,0.0f,selectedImage.size.height,selectedImage.size.width);
layerBack.position=CGPointMake(200,200);
layerBack.contents = (id)selectedImage.CGImage;
// in theory I think this line should be equal to selectedImage.CGImage, but when I do that, Xcode shows me an error!
[self.view.layer addSublayer:layerBack];
[layerBack display];
这个石英的东西让我抓狂!请帮忙!
是的,图像在那里并且正在工作,但我在此代码后看到的只是一个空白屏幕。
答案 0 :(得分:3)
我假设此代码来自您的视图控制器,并且在此之前已正确构建其视图(否则,您将向nil发送消息)。另外,我假设上面的addedObject
,您的意思是selectedImage
。跳出来的一件事是
[layerBack display];
应替换为
[layerBack setNeedsDisplay];
关于-display:
您不应该调用此方法 直接
在核心动画编程指南的"Providing Layer Content"部分中,有更多关于如此设置图层内容的内容。
答案 1 :(得分:2)
首先,我认为你必须将CGImage转换为id。
layerBack.contents = (id)selectedImage.CGImage;
其次,我认为你必须将图层添加到视图内容层
[self.view.layer addSublayer:layerBack];
但我总是使用我的自定义UIViews类的+(Class)layerClass;生成自定义图层,布局自己的子图层,但也许只是我。
答案 2 :(得分:1)
selectedImage是什么以及它与addedObject的关系?从我看到的,你得到一个图像,但然后添加一个完全不同的,不相关的图像,可能是一个空白的图像。
您是否关注Xcode为您提供的消息?
答案 3 :(得分:1)
桥接它:
layerBack.contents = (__bridge id)selectedImage.CGImage;