En mi archivo .plist, tengo " Ver la apariencia de la barra de estado basada en el controlador " configurado en NO
. Pero después UIImagePickerController
, mi aplicación se comporta como si la opción estuviera establecida en YES
.
En mi aplicación, presento un VC que presenta a UIImagePickerController
.
El problema ocurre así:
- Después de que se presenta el selector de fotos, cuando se selecciona una biblioteca de fotos, el color del texto de la barra de estado cambia.
- Luego, una vez que
UIImagePickerController
se descarta, el espaciado de la barra de estado cambia para el resto de mi aplicación y toda la barra de navegación para otros controladores se muestra debajo de la barra de estado.
¿Hay alguna manera de resolver esto sin administrar la barra de estado en mis controladores de vista?
Respuestas:
Ninguna de las soluciones anteriores funcionó para mí, pero al combinar las respuestas de Rich86man y iOS_DEV_09, obtuve una solución que funciona constantemente:
y
En cuanto a esta increíble solución. Para 2014 / iOS8 encontré en algunos casos que TAMBIÉN necesitas incluir
prefersStatusBarHidden
y, posiblemente,childViewControllerForStatusBarHidden
Entonces ...Espero que ayude a alguien
fuente
Me enfrenté a este mismo problema hoy. Aquí está mi solución.
En el controlador de vista que llama al selector de imágenes, configúrate como el delegado del selector de imágenes. (Probablemente ya estés haciendo esto)
Como UIImagePickerController es un tipo de controlador de navegación, también se está configurando como el delegado de UINavigationController. Luego :
Reemplace UIStatusBarStyleLightContent con cualquier estilo que esté buscando.
fuente
La respuesta aceptada funcionará si tiene la opción 'Ver la apariencia de la barra de estado basada en el controlador' en NO en su archivo .plist. Si realmente necesita controlar la barra de estado en otros controladores de vista y tener esta opción configurada en SÍ, la otra forma de hacer que UIImagePickerController se comporte correctamente es subclasificándola
fuente
Me enfrenté al mismo problema.
Aquí está mi solución. poner esto en la vista Aparecerá del controlador de vista desde el que está abriendo la vista del selector de imágenes
fuente
¿Puedes probar esto? Creo que needStatusBarApperanceUpdate funcionará.
fuente
Encontré esto para ofrecer un manejo adecuado, hay dos partes.
el UIImagePickerController en sí mismo presenta controladores de vista, por lo que este delegado funciona para todos los presentadores en la pila.
viewWillAppear garantiza que este controlador de vista en sí mismo siempre se restablezca cada vez que un controlador de vista actual se descarta por encima de él.
fuente
Yo tuve el mismo problema. Añadir información plist: "Ver la apariencia de la barra de estado basada en el controlador" con el valor "NO"
Ejemplo aquí https://stackoverflow.com/a/19211669
Esta solución me funciona.
fuente
Esto es probablemente un error. Resolví el problema estableciendo "Ver la apariencia de la barra de estado basada en el controlador" en SÍ y en cada controlador de vista pegando el siguiente código:
Entonces mi aplicación se comporta como se esperaba.
fuente
Para ocultar la barra de estado en UIImagePicker:
-
y cuando se descarta UIImagePicker para ocultar la barra de estado en el controlador de vista, use el siguiente código:
fuente
prueba esto ....
esto funcionará en ambos casos, es decir, si usa presentModalViewController y pushViewController
delegar métodos
fuente
Todo lo anterior no funcionó para mí. Resolví el problema cambiando el estilo de presentación a:
fuente
Ninguna de las soluciones anteriores funcionó para mí.
Presento UIImagePickerController como controlador de vista modal. Después de descartar UIImagePickerController, el estado de la barra de estado era:
La solución que solucionó el problema para mí fue restaurar statusBarOrientation después de descartar UIImagePickerController:
fuente
Este código me ayudó a personalizar el estilo de la barra de estado.
EDITAR: esta solución funciona si "Ver la apariencia de la barra de estado basada en el controlador" == SÍ
fuente
Todas las respuestas anteriores están bien y pueden ayudar.
Tuve el mismo problema al tener que administrar la aplicación ejecutada en diferentes versiones de iOS .
Luego, en delegado:
fuente
Otra solución más que puede funcionar en algunas de las situaciones.
fuente
¿Has intentado llamar
[self setNeedsStatusBarAppearanceUpdate]
cuando vuelve a aparecer tu controlador de vista actual?fuente
Intento ocultar la barra de estado en UIImagePickerController en iOS7, pero todavía no sé cómo hacerlo. yo suelo
en el ViewController que llama al UIImagePickerController y establece "Ver apariencia de la barra de estado basada en el controlador = NO" en el archivo plist. Espero que esto pueda ayudar.
fuente
prueba esto :
y en la implementación del protocolo, use esto:
fuente
Esto lo resolvió para mí ...:
fuente
Nada aquí solucionó específicamente el problema que tenía (y tal vez el OP también), así que pensé en compartir mi respuesta. En lugar de ocultar la barra de estado, que creo que es una solución defectuosa (noté que a veces dejaría mi aplicación en un estado donde la barra de estado estaba oculta cuando no debería estarlo). En cambio, opté por tratar de jugar bien con el
UIStatusBarStyles
.Cuando se presenta la vista UIImagePickerController, configuro el estilo de la barra de estado como predeterminado, ya que el color de fondo predeterminado es gris claro.
Luego, cuando se descarta el selector de imágenes, lo configuro nuevamente en
UIStatusBarStyleLightContent
.fuente
En este caso, estamos usando 2 pasos
En el primer paso: Agregue info.plist: "Ver la apariencia de la barra de estado basada en el controlador" con el valor "NO"
En el segundo paso: use / llame a este código con el delegado de UIImagePickerController
En el caso de IOS-7, agregue una función más
fuente
A partir de iOS 8.1, ¡parece que finalmente han solucionado este error! Pude eliminar todas las soluciones que empleé de mi código.
fuente
Al usar el comportamiento predeterminado de iOS 8, tenía problemas con la aparición de la barra de estado cuando la quería oculta.
La solución que encontré fue que, directamente después de llamar
presentPopover
desde mi controlador de vista, hice:También tuve que agregar esto a mi controlador de vista principal:
fuente
Así que tuve este problema y pude resolverlo simplemente implementando una sola función de delegado. El fondo de mi barra de estado es negro, por lo que UIStatusBarStyle para mi aplicación es .LightContent. Cuando presenté el UIImagePickerController para seleccionar una foto del almacenamiento del dispositivo, la barra de estado estaba bien. Sin embargo, al hacer clic en un directorio como "Camera Roll" o "Favoritos", empujando efectivamente a la pila de navegación, la barra de estado desapareció. Al seleccionar una foto, no había ninguna barra de estado; al descartar otro controlador de vista modal, solo estaba presente la batería, lo que indica que el resto de la barra de estado también puede estar en negro.
Probé algunas de las otras soluciones, como extender UIImagePickerController, pero en Swift, no puede anular el uso de extensiones. Luego intenté subclasificar UIImagePickerController e intenté ocultar su barra de estado en viewWillAppear () y mostrar la barra de estado en viewWillDisappear. Pude ver que la barra de estado se ocultaba con una animación .Slide, pero como la barra de estado era invisible al seleccionar un directorio, no pude ver la barra de estado oculta. Nuevamente, la batería verde volvió con el resto de la barra de estado invisible al descartar un controlador de vista modal. También intenté anular prefersStatusBarHidden (), pero esa función nunca se llamó, por lo que intenté llamar a setNeedsStatusBarAppearanceUpdate () para asegurarme de que el sistema llama a prefersStatusBarHidden (), pero todavía no se llama. También, existe la sugerencia de configurar la barra de estado para que se oculte en el método de delegado navigationController willShowViewController. Una vez más, todo lo que hace es ocultar la barra de estado, que no resuelve el problema. Como resultado, parece que el estilo de la barra de estado cambia al presionar sobre la pila de navegación del UIImagePickerController. Para resolver el problema por completo, no tuve que escribir extensiones o subclase UIImagePickerController. Todo lo que necesita hacer es configurar el delegado y configurar el estilo de la barra de estado para que permanezca igual. Esta adición hizo que el problema nunca existiera. parece que el estilo de la barra de estado cambia al presionar sobre la pila de navegación del UIImagePickerController. Para resolver el problema por completo, no tuve que escribir extensiones o subclase UIImagePickerController. Todo lo que necesita hacer es configurar el delegado y configurar el estilo de la barra de estado para que permanezca igual. Esta adición hizo que el problema nunca existiera. parece que el estilo de la barra de estado cambia al presionar sobre la pila de navegación del UIImagePickerController. Para resolver el problema por completo, no tuve que escribir extensiones o subclase UIImagePickerController. Todo lo que necesita hacer es configurar el delegado y configurar el estilo de la barra de estado para que permanezca igual. Esta adición hizo que el problema nunca existiera.
fuente
En realidad, encontré una mejor manera de configurar el color de fondo de la barra de estado en el Selector de imágenes. Básicamente, debe establecer la imagen de fondo de la barra de navegación en nula, porque el valor predeterminado en el selector de imágenes tiene una imagen de fondo como una imagen blanca.
fuente