2014-02-20 4 views
1

Я использую AV Foundation и создал основной слой и дополнительный слой. Основной слой отображает живой «предварительный просмотр» того, что камера видит, прежде чем пользователь сделает снимок. После того, как пользователь сделает снимок, я хочу установить значение свойства содержимого подуровня на захваченную фотографию. Все работает отлично, за исключением установки содержимого подслоя.Проблема с изменением свойства содержимого CALayer на захваченное фото

И я знаю, что подуровень работает, потому что я могу дать ему цвет фона синего цвета, и когда я сделаю снимок в приложении, он успешно превратит подслой синего цвета.

Вот мой код, где я пытаюсь установить подуровень быть захваченное изображение:

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;

Любые идеи о том, как я могу обновить подуровень и заставить его отображать фотографию, которая захватывается?

ответ

0

По прихоти, я попробовал добавить .CGImage к вызову метода imageWithData, и теперь он работает. Я уверен, что это было указано в качестве требования в документации xcode.

Смежные вопросы