Recibo este error solo en iOS 7 y la aplicación se bloqueó. En iOS 6, nunca recibo ningún error, solo una vez de advertencia de memoria al abrir la cámara.
Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates.
Esto es lo que estoy haciendo.
imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setDelegate:self];
[imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
[imagePicker setAllowsEditing:YES];
[self presentModalViewController:imagePicker animated:YES];
Intenté retrasar el presentModalViewController
, pero sigo recibiendo el mismo mensaje. Después de unos segundos (7-10), la aplicación se bloqueó.
Este error solo está presente en iOS 7.
¿Alguien tiene la pista?
Respuestas:
El problema en iOS7 tiene que ver con las transiciones. Parece que si una transición anterior no se completó y lanzas una nueva, iOS7 estropea las vistas, donde iOS6 parece administrarlo correctamente.
Debe inicializar su cámara en su
UIViewController
, solo después de que la vista se haya cargado y con un tiempo de espera:y aquí está el código de inicialización
fuente
Este error también me apareció con el proyecto de código de muestra PhotoPicker de Apple.
Estaba usando Xcode versión 5.0 y iOS 7.0.3 en un iPhone 4.
Pasos para reproducir:
Descargue el proyecto de muestra PhotoPicker de Apple en https://developer.apple.com/library/ios/samplecode/PhotoPicker/Introduction/Intro.html
En APLViewController.m comentar la línea 125
//imagePickerController.showsCameraControls = NO;
En APLViewController.m comentar las líneas 130-133
//[[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
// self.overlayView.frame = imagePickerController.cameraOverlayView.frame;
// imagePickerController.cameraOverlayView = self.overlayView;
// self.overlayView = nil;
Cree y ejecute la aplicación.
Una vez iniciado, gire el dispositivo al modo horizontal.
Haga clic en el icono de la cámara para abrir UIImagePickerController en el modo de cámara.
Ver la salida de la consola.
Salida de consola
PhotoPicker [240: 60b] Hacer una instantánea de una vista que no se ha renderizado da como resultado una instantánea vacía. Asegúrese de que su vista se haya renderizado al menos una vez antes de realizar una instantánea o una instantánea después de las actualizaciones de pantalla.
Propiedad showsCameraControls
El problema me ocurre cuando esto tiene un valor de SÍ (el predeterminado).
Establecer esto en NO eliminó el mensaje.
Informe de error
Acabo de presentar un informe de error a Apple.
He probado muchas de las sugerencias que se han hecho en diferentes publicaciones, pero no he encontrado una solución alternativa satisfactoria.
fuente
Tuve el problema cuando intenté presentar la vista de la cámara dentro de un popover. En iOS6 esto no fue un problema, pero en iOS7 recibí el mensaje
también.
Sin embargo, después de que cambié la presentación de la vista de la cámara a pantalla completa como se describe en Cómo tomar fotografías y películas, la biblioteca para desarrolladores de iOS todo salió bien nuevamente y el mensaje nunca volvió a aparecer. Sin embargo, tenía que asegurarme de que, dependiendo del modo en que se encuentre la aplicación (es decir, presentando la vista de la cámara o el rollo de fotos), tenía que descartar el popover o el controlador de vista cada vez que
- (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker
se llamaba al método .fuente
crear una propiedad
Luego
esto deberia resolver el problema
fuente
Usé este código para solucionar el problema:
fuente
Tengo el mismo problema y encontré una solución. Creo que ese error está relacionado con la orientación de su aplicación. Mi aplicación usa solo el modo horizontal, pero UIImagePickerController usa el modo vertical. Agrego el bloque try-catch a main.m y obtengo una excepción real:
Cómo resuelvo este problema:
1) Vuelva a verificar la orientación del dispositivo en Destino-> General, o archivo .plist: Orientaciones de interfaz compatibles: Horizontal izquierda, Horizontal derecha.
2) Agregue AppDelegate.m:
Después de este paso, UIImagePickerController funciona correctamente, pero mis controles de vista se pueden girar al modo vertical. Entonces, para resolver esto:
3) Cree una categoría para UINavigationController, (supportedInterfaceOrientations se movió de UIViewController a UINavigationController en iOS6):
Esta solución funciona correctamente en iOS 6.0, 6.1, 7.0. Espero que esto ayude.
fuente
Recibo este error al compilar la aplicación con iOS SDK 6.1, el objetivo de implementación iOS 6.1 y ejecutar la aplicación en un iPhone con iOS 7. La aplicación no falla, pero el
UIViewController shouldAutorotate
método de implementación me ayuda a eliminar el mensaje de error.fuente
Tuve el mismo problema cuando intentaba modificar la aplicación de demostración que viene con el SDK de Avirary , en la aplicación de demostración, solo puede editar la foto seleccionada del carrete de la cámara. Para intentar editar la foto capturando desde la cámara, primero agregué el siguiente código en el archivo UIViewcontroller.m:
Luego, cuando ejecuto la aplicación, se produjo el error:
Para resolver el error, modifique el delegado de UIImagePicker en su archivo UIViewContooler.m como se muestra a continuación:
¡Entonces el error desapareció y la aplicación funciona!
fuente
Prueba esto, usa
y función
para reemplazar.
[self presentModalViewController:imagePicker animated:YES];
y de cause makeimagePicker
como variable global.fuente
Esto es lo que me solucionó en mi aplicación, mmm
Primero, es una aplicación para iPhone - iPad
en appname-Info.plist. en las orientaciones de interfaz compatibles (iPad) mostró 4 orientaciones.
en las orientaciones de interfaz admitidas se muestran 3 orientaciones. Agregué el cuarto y ejecuté la aplicación, sin salida de depuración.
Espero que esto ayude.
fuente
Acabo de encontrar el mismo problema. En mi caso, el problema fue que tenía un código que no era ARC y lo había migrado a ARC. Cuando hice la migración, no tenía una fuerte referencia al
UIImagePickerController
y esa fue la razón del bloqueo.Espero eso ayude :)
fuente
Tuve el mismo problema en iOS 8, pero el acceso a la cámara estaba deshabilitado dentro de Configuración -> Privacidad para mi aplicación. Simplemente lo habilité y estaba funcionando.
fuente
Pasé mucho tiempo tratando de encontrar la solución, y sorprendentemente la encontré al final y fue muy divertido una vez que la descubrí.
Esto es lo que hará para recuperar la imagen que eligió y reanudar el trabajo :)
Sí, para resolver el problema, solo necesita descartar el selector normalmente, ya que parece este mensaje: "Hacer una instantánea de una vista que no se ha procesado da como resultado una instantánea vacía. Asegúrese de que su vista se haya procesado al menos una vez antes de la instantánea o la instantánea posterior actualizaciones de pantalla ". evita que el selector responda, pero puede descartarlo y recuperar la imagen normalmente.
fuente
En mi caso, estaba relacionado con un cambio de diseño: el VC que presenta
UIImagePickerViewController
tiene la barra de estado oculta, pero no laUIImagePickerViewController
tiene.Entonces, lo resolví ocultando la barra de estado en el
UIImagePickerViewController
como se muestra en esta respuesta .fuente
Sin responder directamente a su pregunta, pero mencionó que tenía una advertencia de memoria, es posible que esté almacenando la imagen sin procesar en una propiedad que puede llevar a una advertencia de memoria. Esto se debe a que la imagen sin procesar ocupa aproximadamente 30 MB de memoria. Noté una advertencia de memoria similar al probar aplicaciones en iOS6 que estaban en la serie iPhone 4. Todavía recibí esta advertencia cuando los dispositivos se actualizaron a iOS7. No hay advertencia de memoria cuando se prueba en la serie iPhone 5 en iOS7.
fuente
Cambiando
a
solucionó el problema para mí.
fuente