Busco una manera de capturar una captura de pantalla en el iPhone con la barra de estado superior incluido, actualmente estoy usando el siguiente código:Capturar pantalla de iPhone con barra de estado incluida?
UIGraphicsBeginImageContext(self.view.bounds.size); //self.view.window.frame.size
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
El código anterior se mostrará una captura de pantalla del iPhone UIView pero hace no incluye la barra de estado superior (en su lugar solo hay un espacio en blanco de 20 píxeles).
He leído sobre este API privada función antes, tengo curiosidad por saber si Apple aceptará la aplicación para el iPhone para usar una función API privada? –
Los sentimientos varían según el uso de las API privadas. Aquí está mi opinión: 1) El uso de API privadas va en contra de las reglas de Apple y es una de las (enloquecedoramente) pocas formas obvias en que tu aplicación puede ser rechazada o retirada de la tienda; pero ... 2) Algo tan simple como una captura de pantalla puede volar bajo el radar y no ser notado por un reviwer; y aún así ... 3) Apple podría cambiar esa API en cualquier momento en el futuro, con cualquier versión, de cualquier manera, por cualquier motivo, sin previo aviso. Siento que cualquier uso de API privadas se está configurando para un dolor de cabeza de soporte y creando la posibilidad de una mala experiencia de usuario. –
En este caso particular, no creo que exista un gran riesgo si la función tiene acceso de manera dinámica y se explican las fallas: la aplicación puede simplemente volver a una captura de pantalla utilizando el método estándar. Sin embargo, su implementación particular en mi respuesta utiliza enlaces estáticos, y eso es un ejercicio para el lector. – rpetrich