无法将CALayer的“内容”属性更改为捕获的照片

时间:2014-02-20 02:49:09

标签: ios objective-c uiimage avfoundation calayer

我正在使用AV Foundation并创建了一个主图层和一个子图层。主图层显示相机在用户拍照前看到的实时“预览”。在用户拍照后,我想将子图层内容属性的值设置为捕获的照片。除了设置子图层的内容外,一切都很完美。

我知道子层正在工作,因为我可以给它一个蓝色的背景颜色,当我在应用程序中拍照时它会成功地将子图层变为蓝色。

这是我的代码,我试图将子图层设置为捕获的图像:

NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];


UIImage *image = [[UIImage alloc]initWithData:imageData];


CALayer *subLayer = [CALayer layer];


subLayer.contents = (id)[UIImage imageWithData:imageData];


subLayer.frame = _previewLayer.frame;


[_previewLayer addSublayer:subLayer];

我已尝试过几种不同的方法来设置子层的内容属性,但这些方法都不起作用:

subLayer.contents = (id) [UIImage imageWithData:imageData];

subLayer.contents = [UIImage imageWithData:imageData];

subLayer.contents = image;

另外,我知道子层已正确设置,因为如果我添加此语句,它会在我拍照时将子图层完全变为蓝色: subLayer.backgroundColor = [UIColor blueColor].CGColor;

如何更新子图层并使其显示正在捕获的照片?

1 个答案:

答案 0 :(得分:0)

我一时兴起尝试将.CGImage添加到imageWithData方法调用,现在它正在运行。我确定希望它在xcode文档中列为要求。