Dans iOS 7, les applications Phonegap apparaîtront sous la barre d'état. Cela peut rendre difficile le clic sur les boutons / menus qui ont été placés en haut de l'écran.
Y a-t-il quelqu'un qui connaît un moyen de résoudre ce problème de barre d'état sur iOS 7 dans une application Phonegap?
J'ai essayé de compenser la page Web entière avec CSS mais cela ne semble pas fonctionner. Existe-t-il un moyen d'aimer le décalage de toute l'UIWebView ou simplement de faire en sorte que la barre d'état se comporte comme elle le faisait dans iOS6?
Merci
Réponses:
J'ai trouvé une réponse sur un autre fil, mais je répondrai à la question au cas où quelqu'un d'autre se demanderait.
Remplacez simplement le
viewWillAppear
inMainViewController.m
par ceci:la source
En plus du correctif de redimensionnement de Ludwig Kristoffersson, je recommande de changer la couleur de la barre d'état:
la source
s'il vous plaît, installez ce plugin pour phonegap: https://build.phonegap.com/plugins/505
Et utilisez le paramètre correct comme ci-dessous pour contrôler la superposition de la vue Web:
Pour moi, avec Phonegap 3.3.0 cela fonctionne.
Plus d'informations, sur la page du projet Github: https://github.com/phonegap-build/StatusBarPlugin
la source
Pour masquer la barre d'état, ajoutez le code suivant dans le fichier
MainViewController.m
sous la fonction-(void)viewDidUnload
la source
Réponse https://stackoverflow.com/a/19249775/1502287 fonctionné pour moi, mais j'ai dû le changer un peu pour le faire fonctionner avec le plugin de caméra (et potentiellement d'autres) et une balise meta viewport avec "height = device- height "(ne pas régler la partie hauteur ferait apparaître le clavier sur la vue dans mon cas, masquant certaines entrées en cours de route).
Chaque fois que vous ouvrez la vue de la caméra et que vous revenez à votre application, la méthode viewWillAppear est appelée et votre vue diminue de 20 pixels.
En outre, la hauteur de l'appareil pour la fenêtre comprendrait les 20 pixels supplémentaires, ce qui rendrait le contenu défilable et 20px plus haut que la vue Web.
Voici la solution complète au problème de la caméra:
Dans MainViewController.h:
Dans MainViewController.m:
Maintenant, pour le problème de la fenêtre d'affichage, dans votre écouteur d'événements deviceready, ajoutez ceci (en utilisant jQuery):
Voici la fenêtre que j'utilise pour les autres versions:
Et tout fonctionne bien maintenant.
la source
Essayez d'aller dans le
(app name)-Info.plist
fichier de l'application dans XCode et ajoutez les clésCela fonctionne pour moi sans problème.
la source
Pour Cordova 3.1+, il existe un plugin qui traite le changement de comportement de la barre d'état pour iOS 7+.
Ceci est bien documenté ici , y compris comment la barre d'état peut être rétablie dans son état pré-iOS7.
Pour installer le plugin, exécutez:
Ajoutez ensuite ceci à config.xml
la source
Je résous mon problème en installant le
org.apache.cordova.statusbar
et en ajoutant dans mon topconfig.xml
:Ces configurations ne fonctionnent que pour iOS 7+
Référence: http://devgirl.org/2014/07/31/phonegap-developers-guid/
la source
Voir le nouveau plugin Cordova StatusBar qui résout ce problème exact. http://docs.icenium.com/troubleshooting/ios7-status-bar#solution option # 3
la source
J'utilise le morceau de code suivant pour ajouter une classe au corps, si iOS7 est détecté. Je stylise ensuite cette classe pour ajouter une
20px
marge en haut de mon conteneur. Assurez-vous que le plugin "device" est installé et que ce code est à l'intérieur de l'événement "deviceready".En lisant, j'ai entendu dire que la prochaine mise à jour de Phonegap (3.1 je crois) prendrait mieux en charge les modifications apportées à la barre d'état d'iOS7. Cela peut donc être nécessaire comme solution à court terme.
la source
La réponse de Ludwig a fonctionné pour moi.
Pour tous ceux qui ont utilisé sa réponse et qui cherchent maintenant à changer la couleur de la marge blanche (cela peut sembler trivial, mais cela m'a laissé perplexe), voir ceci:
Comment puis-je changer la couleur d'arrière-plan d'UIWebView après avoir fait glisser UIWebView pour résoudre le problème de superposition de la barre d'état iOS7?
la source
Une autre façon est de rétrocompatible . Créez le code HTML selon
iOS 7
(avec une marge supplémentaire de 20 pixels en haut) pour donner cetfull screen
aspect et réduire cette marge supplémentaireiOS < 7.0
. Quelque chose comme ce qui suit dansMainViewController.m
:Cette solution ne laissera pas de barre noire sur le dessus
iOS 7.0
et au-dessus, ce qu'un utilisateur iOS moderne trouvera étrange et ancien .la source
Écrivez le code suivant dans AppDelegate.m dans l' événement didFinishLaunchingWithOptions (exactement avant sa dernière ligne de code " return YES; "):
J'attendrai vos retours! :)
la source
si nous utilisons le plug-in de caméra pour la galerie d'images, la barre d'état reviendra.Pour résoudre ce problème, veuillez ajouter cette ligne
à
fonction à l'intérieur de CVDCamera.m dans la liste des plugins
la source
Écrivez le code suivant dans AppDelegate.m dans l' événement didFinishLaunchingWithOptions au démarrage.
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
Et corrigez pour les versions supérieures à iOS 7 et supérieures.
la source
Pour garder la barre d'état visible en portrait mais la masquer en paysage (c'est-à-dire en plein écran), essayez ce qui suit:
Dans
MainViewController.h
:Dans
MainViewController.m
:C'est une combinaison de ce que j'ai trouvé dans cette discussion et des discussions liées à StackOverflow, du code du plugin Cordova StatusBar (pour ne pas coder en dur la valeur 20px), et quelques incantations de ma part (je ne suis pas un développeur iOS donc J'ai tâtonné mon chemin vers cette solution).
la source
Tout d'abord, ajoutez le plugin Device dans votre projet. L'ID du plug-in est: org.apache.cordova.device et le référentiel est: https://github.com/apache/cordova-plugin-device.git
Ensuite, utilisez cette fonction et appelez-la sur chaque page ou écran: -
la source
La meilleure façon de contrôler l'arrière-plan de la barre d'état - 2017
Après une frustration continue, de nombreuses recherches sur Internet, voici les étapes à suivre:
Utilisez le code suivant sur onDeviceReady
Cela fonctionne pour moi sous iOS et Android.
Bonne chance!
la source