En iOS 8 tengo problemas para capturar imágenes de la cámara hasta ahora estoy usando este código para
UIImagePickerController *controller=[[UIImagePickerController alloc] init];
controller.videoQuality=UIImagePickerControllerQualityTypeMedium;
controller.delegate=(id)self;
controller.sourceType=UIImagePickerControllerSourceTypeCamera;
[self presentViewController:controller animated:YES completion:nil];
Pero en iOS 8 obtengo esto:
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.
He intentado con la solución proporcionada por This Post con
@property (strong,nonatomic)UIImagePickerController *controller;
_controller=[[UIImagePickerController alloc] init];
_controller.videoQuality=UIImagePickerControllerQualityTypeMedium;
_controller.delegate=(id)self;
_controller.sourceType=UIImagePickerControllerSourceTypeCamera;
_[self presentViewController:controller animated:YES completion:nil];
y esto
...
controller.modalPresentationStyle=UIModalPresentationFullScreen;
or
controller.modalPresentationStyle=UIModalPresentationCurrentContext;
...
y esto
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self presentViewController:controller animated:YES completion:nil];
});
y esto
[self presentViewController:controller animated:YES completion:NULL];
y esto
[self presentViewController:controller animated:YES completion:^{
}];
¿alguna idea?
objective-c
ios8
uiimagepickercontroller
souvickcse
fuente
fuente
dispatch_async(dispatch_get_main_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
que cambié adispatch_async(dispatch_get_main_queue(), ^{
Respuestas:
Estoy bastante seguro de que esto es solo un error en iOS 8.0. Es reproducible con la más simple de las aplicaciones de POC que no hace más que intentar presentar una imagen
UIImagePickerController
como la que estás haciendo arriba. Además, que yo sepa, no hay un patrón alternativo para mostrar el selector / cámara de imágenes. Incluso puede descargar la aplicación de muestra Uso de UIImagePickerController de Apple , ejecutarla y generará el mismo error de fábrica .Dicho esto, la funcionalidad todavía funciona para mí. Aparte de la advertencia / error, ¿tiene problemas con el funcionamiento de su aplicación?
fuente
Estuve luchando con este problema durante varias horas, ¡he leído todos los temas relevantes y descubrí que el error fue causado porque, bajo la configuración de privacidad de mi dispositivo, el acceso de la cámara a mi aplicación estaba bloqueado! Nunca he negado el acceso a la cámara y no sé cómo se bloqueó, ¡pero ese era el problema!
fuente
No tengo suficientes puntos de reputación para comentar la respuesta de @ greg anterior, por lo que agregaré mis observaciones aquí. Tengo un proyecto Swift para iPad y iPhone. Tengo un método dentro de mi controlador de vista principal (bit relevante a continuación). Cuando pruebo esto en un teléfono, todo funciona correctamente y no se generan advertencias. Cuando lo ejecuto en un iPad, todo funciona correctamente, pero veo la advertencia sobre la captura de la vista. Sin embargo, lo interesante es que cuando ejecuto un iPad sin usar el controlador de popover, todo funciona correctamente sin advertencia. Desafortunadamente, Apple exige que el selector de imágenes se use dentro de un popover en iPad, si no se usa la cámara.
fuente
Me encontré con esto después de llamar a UIImagePickerController presentViewController: desde la devolución de llamada a un delegado UIAlertView. Resolví el problema presionando el presentViewController: cancele el seguimiento de ejecución actual usando dispatch_async.
fuente
Tuve este problema al animar algunas vistas y la aplicación entraría en modo de fondo y volvería. Lo manejé estableciendo una bandera isActive. Lo puse en NO en
y SÍ en
y animar o no animar mis puntos de vista en consecuencia. Se ocupó del problema.
fuente
Tenía esto con una UIAlertControllerStyleActionSheet que le daba al usuario la opción de tomar una foto con la cámara o usar una de la biblioteca.
Intenté un punto de interrupción simbólico en el mensaje de error
Eso me mostró que el error se produce por el uso interno de un UICollectionView durante la presentación
Lo arreglé estableciendo explícitamente el marco antes de presentar
Aquí está el método completo que funciona sin el error
fuente
Puede silenciar la advertencia "Capturar una vista" haciendo referencia a la
view
propiedad antes de presentar el controlador de vista. Al hacerlo, la vista se carga y permite que iOS la procese antes de tomar la instantánea.fuente
cameraOverlayView
, desafortunadamente sigo teniendo este problema incluso cuando aplico este consejo.Para cualquiera que esté viendo un problema con una vista previa en negro después de la captura de imagen, ocultar la barra de estado después de que se muestre el UIPickerController parece solucionar el problema.
fuente
Encontré el mismo problema y probé todo. Tengo dos aplicaciones diferentes, una en Objective-C y otra en Swift, ambas tienen el mismo problema. El mensaje de error aparece en el depurador y la pantalla se vuelve negra después de la primera foto. Esto solo ocurre en iOS> = 8.0, obviamente es un error.
Encontré una solución difícil. Apague los controles de la cámara con imagePicker.showsCameraControls = false y cree su propio overlayView que tiene los botones que faltan. Hay varios tutoriales sobre cómo hacer esto. El extraño mensaje de error permanece, pero al menos la pantalla no se oscurece y tienes una aplicación que funciona.
fuente
Esto podría ser un error de ImagePickerController incorporado. Mi código funciona, pero ocasionalmente se bloquea en el iPhone 6 Plus.
He probado todas las soluciones sugeridas por otras respuestas, pero no tuve suerte. El problema finalmente se resolvió después de cambiar a JPSImagePickerController .
fuente
He intentado todo, mi problema fue que el selector de imágenes para la cámara y la biblioteca de fotos desapareció justo después de que aparecieron. Lo resolví con la siguiente línea (rápida)
fuente
Estoy bastante seguro de que esto es solo un error en iOS 8.0. Es reproducible con la más simple de las aplicaciones POC que no hace más que intentar presentar un UIImagePickerController como lo está haciendo anteriormente. Además, que yo sepa, no hay un patrón alternativo para mostrar el selector / cámara de imágenes. Incluso puede descargar la aplicación de ejemplo Uso de UIImagePickerController de Apple, ejecutarla y generará el mismo error de fábrica.
Dicho esto, la funcionalidad todavía funciona para mí. Aparte de la advertencia / error, ¿tiene problemas con el funcionamiento de su aplicación?
fuente
Si estamos usando
UIImagePickerController
como propiedad, esta advertencia desaparecerá.xcodesupongamos que no estamos utilizando el resultado deUIImagePickerController
, si estamos instanciandoUIImagePickerController
dentro de una función.fuente
Llamar a este método funcionó para mí. Colóquelo después de presentar su vista.
fuente
También encuentro el mismo problema y lo resolví comprobando si la cámara está disponible:
fuente
Me he encontrado con este problema. Cuando llamamos a la cámara y lanzamos las vistas, se produjo este problema. Por ejemplo, llame a una cámara y configure la vista nula en el método viewDidDisappear, este error se producirá ya que no hay devolución de llamada para el evento de la cámara. Asegúrese también de este caso para este error.
fuente
Recibí el mismo error, recibiendo un mensaje debajo de la consola al abrir la cámara.
'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 instantánea después de las actualizaciones de la pantalla ".
Para mí, el problema era con el nombre para mostrar del paquete en el archivo Info.plist. De alguna manera estaba vacío, puse el nombre de mi aplicación allí y ahora funciona bien. No recibí ninguna alerta de permiso de cámara debido al nombre para mostrar del paquete vacío. bloqueó la vista de la representación.
el problema no estaba en la vista, pero presentándolo sin permiso. Puede verificarlo en configuración -> privacidad -> Cámara, si su aplicación no aparece en la lista, el problema puede ser el mismo.
fuente
Estoy usando Phonegap, pero este hilo sigue apareciendo como el primero cuando busco en Google el mensaje de error.
Para mí, este problema desapareció al definir el tipo de imagen en PNG.
Entonces toda la línea es:
Su millaje puede variar, pero eso fue el truco para mí.
fuente
Alternativamente, considere usar
drawViewHierarchyInRect
:Rápido:
C objetivo:
Ver también:
fuente
En mi caso (XCode 7 e iOS 9), uso
UINavigationController
"oculto", ¡así que tengo que agregarUINavigationControllerDelegate
a la cámara actual o rodar y funciona como se supone que debe hacerlo!And pickerControllerDelegate.self
¡tampoco muestra error!fuente