Search code examples
iphonecocoacore-animation

Why does this CALayer not display an image?


Can you guys tell why this code shows no image?

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];

This Quartz stuff is driving me crazy! Please help!

Yes, the image is there and is working, but all I see after this code is a blank screen.


Solution

  • I assume that this code is from your view controller and that its view has been properly constructed before this (otherwise, you'll be sending messages to nil). Also, I assume by addedObject above, you mean selectedImage. One thing that jumps out at me is that

    [layerBack display];
    

    should be replaced with

    [layerBack setNeedsDisplay];
    

    From the CALayer documentation, in regards to -display:

    You should not call this method directly.

    There's more on setting the content of layers like this in the "Providing Layer Content" section of the Core Animation Programming Guide.