Ios 从UIImagePicker加载图像时CALayer出现问题

Ios 从UIImagePicker加载图像时CALayer出现问题,ios,xcode4,uiimageview,calayer,layer,Ios,Xcode4,Uiimageview,Calayer,Layer,我有一个带有UIImageView(imageView)的UIViewController,我正在定义几个层,这些层将嵌套在imageView中,如viewDidLoad中所示: //container layer - the very top layer CALayer *containerLayer = [CALayer layer]; containerLayer.opacity = 0; containerLayer.bounds = [self.imageView.layer fram

我有一个带有UIImageView(imageView)的UIViewController,我正在定义几个层,这些层将嵌套在imageView中,如viewDidLoad中所示:

//container layer - the very top layer
CALayer *containerLayer = [CALayer layer];
containerLayer.opacity = 0;
containerLayer.bounds = [self.imageView.layer frame];

// Holder Layer
CALayer *holderLayer = [CALayer layer];
holderLayer.opacity = 0;
holderLayer.bounds = self.imageView.bounds;

// Hierarchy layers
[containerLayer setValue:holderLayer forKey:@"__holderLayer"];
[containerLayer addSublayer:holderLayer];

[self.imageView.layer addSublayer:containerLayer];
从UIImagePicker加载图像时,我有以下代码:

    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    UIImageView *newImgView = [[UIImageView alloc] initWithFrame:self.imageView.frame];

    CGRect frame = self.imageView.frame;

    newImgView.image = image;
    frame.origin = CGPointMake(0, 0);
    newImgView.layer.frame = frame;
    newImgView.layer.opacity = .9;
    newImgView.layer.contentsGravity = kCAGravityResizeAspectFill;

    CALayer * containerLayer = self.imageView.layer.sublayers[0];

    if (containerLayer != nil)
    {

        [containerLayer setValue:newImgView.layer forKey:@"__imageLayer"];


        CALayer * holderLayer = [containerLayer valueForKey:@"__holderLayer"];
        if (holderLayer != nil)
        {
            //!!!!!line below doesn't work!!!
            //[holderLayer addSublayer:newImgView.layer];

            //line below works!
            [self.imageView.layer addSublayer:newImgView.layer];
        }   
    }
    [self.imageView setNeedsDisplay];
    [self checkAndPrintLayers];
因此,第一个嵌套层是containerLayer,然后是holderLayer,我希望将各种图像作为子层添加到holderLayer,然后对其进行操作。但是,

  [holderLayer addSublayer:newImgView.layer];
[self.imageView.layer addSublayer:newImgView.layer];
不起作用;imageView保持空白。但是,

  [holderLayer addSublayer:newImgView.layer];
[self.imageView.layer addSublayer:newImgView.layer];
在顶层添加一个子层非常有效。 我是不是漏掉了什么明显的东西?我想听听你的建议。 谢谢。

因为 holderLayer和containerLayer是透明的(holderLayer.opacity=0/containerLayer.opacity=0),

成功了

 //container layer - the very top layer
CALayer *containerLayer = [CALayer layer];
containerLayer.opacity = 1.0;
containerLayer.bounds = [self.imageView.layer frame];

// Holder Layer
CALayer *holderLayer = [CALayer layer];
holderLayer.opacity = 1.0;
holderLayer.bounds = self.imageView.bounds;

我设置那些认为不透明度是阻止图像-但你是对的!非常感谢。