У меня есть UIViewController с UIImageView (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, и я ожидаю добавить различные изображения в качестве подслоев к держателюLayer, а затем манипулировать им. Тем не менее, вызов
[holderLayer addSublayer:newImgView.layer];
не работает; imageView остается пустым. Тем не менее, вызов
[self.imageView.layer addSublayer:newImgView.layer];
и добавление подслоя к верхнему слою работает просто отлично. Я пропустил что-то очевидное здесь? Буду рад любым предложениям. благодаря.