UIImageView无法显示CALayer的内容?

时间:2013-12-29 14:33:53

标签: ios uiimageview uiimage calayer

UILabel显示后,我可以看到下层的contens不是零。然后我这样做:

UIImage *image = [UIImage imageWithCGImage:(__bridge CGImageRef)(self.v2.layer.contents)];
UIImageView *iv = [[UIImageView alloc] initWithImage:image];
iv.backgroundColor = [UIColor grayColor];
iv.frame = CGRectMake(100, 200, 120, 120);
[self.window addSubview:iv];

但我看不到图像,为什么?我可以看到图像视图在那里,只有灰色的背景颜色。

1 个答案:

答案 0 :(得分:0)

因为当您使用contents属性作为getter时,CALayer不会返回CGImageRef。 记录返回值,您将看到,您获得了一个CABackingStore实例(在iOS 6中测试过。)。

// label is a UILabel
NSLog(@"%@", self.label.layer.contents);
// NSLog output : <CABackingStore 0x7181b90 (buffer [126 21] BGRA8888)>

如果要将图层内容传输到UIImageView,可以将原始图层内容分配给imageView图层内容。

UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 120, 120)];
iv.backgroundColor = [UIColor grayColor];
iv.layer.contents = self.v2.layer.contents;
[self.window addSubview:iv];