estoy trabajando con un UIScrollView que se puede utilizar en cualquier orientación y contiene una serie de subvistas:Captura UIScrollView fuera contenido de la pantalla
// in viewDidLoad
mainScrollView = (UIScrollView *)self.view;
mainScrollView.contentSize = CGSizeMake(1024, 1432);
Estoy tratando de capturar una captura de pantalla de toda la vista de desplazamiento con todas sus subvistas, incluso lo que no está visible actualmente en la pantalla. Las siguientes capturas sólo lo que es visible en la pantalla en el momento de la captura:
// make screenshot
UIGraphicsBeginImageContext(mainScrollView.bounds.size);
[mainScrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// save screenshot in docs dir
NSData *pngData = UIImagePNGRepresentation(screenImg);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
[pngData writeToFile:[documentsDir stringByAppendingPathComponent:@"screen1.png"]
options:NSDataWritingAtomic error:nil];
Añadiendo lo siguiente antes de hacer la captura de pantalla era la única manera de que pudiera fino que me permitió capturar toda la vista de desplazamiento:
// capture off-screen content
mainScrollView.frame = CGRectMake(0, 0, 1024, 1432);
Esta captura es correcta e incluye todas las subvistas. El problema es que una vez que realizo la captura de pantalla, mi vista de desplazamiento deja de responder, por lo que ya no puedo desplazarme (o desplazarme lateralmente si estoy en modo vertical). Si giro el dispositivo, el problema parece rectificarse y puedo desplazarme y desplazarme normalmente. Estoy seguro de que me falta algo muy simple que es necesario para que mi vista de desplazamiento funcione normalmente en línea recta después de tomar la captura de pantalla. ¡Cualquier sugerencia muy apreciada!
Debo añadir, en caso de que sea relevante, que se trata de una aplicación para iPad. – beev