En iOS 7, las aplicaciones Phonegap aparecerán debajo de la barra de estado. Esto puede dificultar el hacer clic en los botones / menús que se han colocado en la parte superior de la pantalla.
¿Hay alguien que sepa cómo solucionar este problema de la barra de estado en iOS 7 en una aplicación Phonegap?
Intenté compensar toda la página web con CSS, pero no parece funcionar. ¿Hay alguna manera de compensar todo el UIWebView o simplemente hacer que la barra de estado se comporte como lo hizo en iOS6?
Gracias
Respuestas:
Encontré una respuesta en otro hilo, pero responderé la pregunta en caso de que alguien más se pregunte.
Basta con sustituir el
viewWillAppear
enMainViewController.m
esto:fuente
Además de la corrección de cambio de tamaño de Ludwig Kristoffersson, recomiendo cambiar el color de la barra de estado:
fuente
por favor, instale ese complemento para phonegap: https://build.phonegap.com/plugins/505
Y use la configuración correcta como a continuación, para controlar la superposición de la vista web:
Para mí, con Phonegap 3.3.0 funciona.
Más información, en la página del proyecto Github: https://github.com/phonegap-build/StatusBarPlugin
fuente
Para ocultar la barra de estado, agregue el siguiente código en el archivo
MainViewController.m
debajo de la función-(void)viewDidUnload
fuente
La respuesta https://stackoverflow.com/a/19249775/1502287 funcionó para mí, pero tuve que cambiarlo un poco para que funcionara con el complemento de la cámara (y potencialmente con otros) y una metaetiqueta de la ventana gráfica con "height = device- height "(no establecer la parte de altura haría que el teclado apareciera sobre la vista en mi caso, ocultando algunas entradas en el camino).
Cada vez que abría la vista de la cámara y volvía a su aplicación, se llamaría al método viewWillAppear y su vista se reduciría en 20px.
Además, la altura del dispositivo para la ventana gráfica incluiría los 20 px adicionales, lo que hace que el contenido sea desplazable y 20 px más alto que la vista web.
Aquí está la solución completa para el problema de la cámara:
En MainViewController.h:
En MainViewController.m:
Ahora para el problema de la ventana gráfica, en su detector de eventos listo para el dispositivo, agregue esto (usando jQuery):
Aquí está la ventana gráfica que uso para otras versiones:
Y todo funciona bien ahora.
fuente
Intente ingresar al
(app name)-Info.plist
archivo de la aplicación en XCode y agregue las clavesEsto funciona para mí sin problema.
fuente
Para Cordova 3.1+, hay un complemento que se ocupa del cambio en el comportamiento de la barra de estado para iOS 7+.
Esto está bien documentado aquí , incluido cómo la barra de estado se puede revertir a su estado anterior a iOS7.
Para instalar el complemento, ejecute:
Luego agregue esto a config.xml
fuente
Resuelvo mi problema instalando
org.apache.cordova.statusbar
y agregando en mi parte superiorconfig.xml
:Estas configuraciones solo funcionan para iOS 7+
Referencia: http://devgirl.org/2014/07/31/phonegap-developers-guid/
fuente
Vea el nuevo complemento Cordova StatusBar que aborda ese problema exacto. http://docs.icenium.com/troubleshooting/ios7-status-bar#solution opción # 3
fuente
Utilizo la siguiente pieza de código para agregar una clase al cuerpo, si se detecta iOS7. Luego le doy estilo a esa clase para agregar un
20px
margen en la parte superior de mi contenedor. Asegúrese de tener instalado el complemento "dispositivo" y que este código esté dentro del evento "deviceready".Después de leer, escuché que la próxima actualización de Phonegap (3.1, creo) admitirá mejor los cambios en la barra de estado de iOS7. Por lo tanto, esto puede ser necesario como una solución a corto plazo.
fuente
La respuesta de Ludwig funcionó para mí.
Para cualquiera que haya usado su respuesta y ahora esté buscando cambiar el color del margen blanco (puede parecer trivial, pero me dejó perplejo), vea esto:
¿Cómo puedo cambiar el color de fondo de UIWebView después de deslizar hacia abajo UIWebView para solucionar el problema de superposición de la barra de estado de iOS7?
fuente
Otra forma es la compatibilidad con versiones anteriores . Haga el HTML de acuerdo con
iOS 7
(con un margen adicional de 20px en la parte superior) para darle esefull screen
aspecto y corte ese margen adicional paraiOS < 7.0
. Algo como lo siguiente enMainViewController.m
:Esta solución no dejará una barra negra en la parte superior
iOS 7.0
y superior, lo que un usuario moderno de iOS encontrará extraño y antiguo .fuente
Escriba el siguiente código dentro de AppDelegate.m en el evento didFinishLaunchingWithOptions (exactamente antes de su última línea de código " return YES; "):
¡Esperaré tus comentarios! :)
fuente
si usamos el complemento de la cámara para la galería de imágenes, la barra de estado volverá, así que para solucionar ese problema, agregue esta línea
a
función dentro de CVDCamera.m en la lista de complementos
fuente
Escriba el siguiente código dentro de AppDelegate.m en el evento didFinishLaunchingWithOptions al inicio.
CGRect screenBounds = [[UIScreen mainScreen] bounds]; // Fixing status bar ------------------------------- NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; if ([[vComp objectAtIndex:0] intValue] >= 7) { // iOS 7 or above CGRect newWebViewBounds = CGRectMake( 0, 20, screenBounds.size.width, screenBounds.size.height-20 ); screenBounds = newWebViewBounds; } // ------------------------------- Fixing status bar End
Y arregle para iOS 7 y superior.
fuente
Para mantener la barra de estado visible en vertical pero ocultarla en horizontal (es decir, pantalla completa), intente lo siguiente:
En
MainViewController.h
:En
MainViewController.m
:Esta es una combinación de lo que encontré en esto y las discusiones vinculadas de StackOverflow, algo de código del complemento Cordova StatusBar (para no codificar el valor de 20px), y algunos encantamientos de mi parte (no soy un desarrollador de iOS, así que Busqué a tientas mi camino hacia esta solución).
fuente
En primer lugar, agregue el complemento de dispositivo en su proyecto. La identificación del complemento es: org.apache.cordova.device y el repositorio es: https://github.com/apache/cordova-plugin-device.git
Después de eso, use esta función y llámela en cada página o pantalla: -
fuente
La mejor manera de controlar el fondo de la barra de estado - 2017
Después de una frustración constante, muchas búsquedas en Internet, estos son los pasos que debe seguir:
Utilice el siguiente código en onDeviceReady
Me funciona en iOS y Android.
¡Buena suerte!
fuente