【问题标题】:Trouble changing a CALayer's "contents" property to captured photo无法将 CALayer 的“内容”属性更改为捕获的照片
【发布时间】:2014-03-20 18:20:13
【问题描述】:

我正在使用 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;

有什么想法可以更新子图层并使其显示正在捕获的照片吗?

【问题讨论】:

    标签: ios objective-c uiimage avfoundation calayer


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多