Tomar una captura de pantalla cuando la camera está encendida -iOS

Estoy trabajando en una aplicación AR donde estoy usando el código de ejemplo AVCam de Apple en mi proyecto. Estoy intentando tomar una captura de pantalla usando los siguientes methods que he encontrado aquí pero que no funcionan para mí. ¿Alguna sugerencia? Gracias.

- (UIImage *) screenshot { UIWindow *window = [UIApplication shanetworkingApplication].keyWindow; if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) UIGraphicsBeginImageContextWithOptions(window.bounds.size, NO, [UIScreen mainScreen].scale); else UIGraphicsBeginImageContext(window.bounds.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); NSData * data = UIImageJPEGRepresentation(image, 1.0); return [UIImage imageWithData:data]; } - (UI Image*)screenshot2 { // On iOS prior to 4, fall back to use UIGraphicsBeginImageContext CGSize imageSize = [[UIScreen mainScreen] bounds].size; if (NULL != UIGraphicsBeginImageContextWithOptions) UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0); else UIGraphicsBeginImageContext(imageSize); CGContextRef context = UIGraphicsGetCurrentContext(); // Iterate over every window from back to front for (UIWindow *window in [[UIApplication shanetworkingApplication] windows]) { if (![window respondsToSelector:@selector(screen)] || [window screen] == [UIScreen mainScreen]) { // -renderInContext: renders in the coordinate space of the layer, // so we must first apply the layer's geometry to the graphics context CGContextSaveGState(context); // Center the context around the window's anchor point CGContextTranslateCTM(context, [window center].x, [window center].y); // Apply the window's transform about the anchor point CGContextConcatCTM(context, [window transform]); // Offset by the portion of the bounds left of and above the anchor point CGContextTranslateCTM(context, -[window bounds].size.width * [[window layer] anchorPoint].x, -[window bounds].size.height * [[window layer] anchorPoint].y); // Render the layer hierarchy to the current context [[window layer] renderInContext:context]; // Restore the context CGContextRestoreGState(context); } } // Retrieve the screenshot image UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } 

El código no funciona porque renderInContext de CALayer no genera contenido de la camera.

Consulte la siguiente reference: https://developer.apple.com/library/ios/qa/qa1714/_index.html

Como se describe en el enlace anterior, puede:
1) captura el contenido de la camera utilizando las API de AVFoundation relacionadas ( https://developer.apple.com/library/ios/qa/qa1702/_index.html#//apple_ref/doc/uid/DTS40010192 )
2) y luego dibuje la image capturada en el context de charts donde representó sus elementos UIKit.