No iOS 7, os aplicativos Phonegap aparecerão abaixo da barra de status. Isso pode dificultar o clique em botões / menus que foram colocados na parte superior da tela.
Existe alguém que conhece uma maneira de corrigir esse problema da barra de status no iOS 7 em um aplicativo Phonegap?
Tentei deslocar a página da web inteira com CSS, mas não parece funcionar. Existe uma maneira de deslocar todo o UIWebView ou apenas fazer a barra de status se comportar como no iOS6?
obrigado
Respostas:
Eu encontrei uma resposta em outro tópico, mas responderei a pergunta caso outra pessoa se pergunte.
Basta substituir o
viewWillAppear
emMainViewController.m
com este:fonte
Além da correção de redimensionamento de Ludwig Kristoffersson, recomendo alterar a cor da barra de status:
fonte
por favor, instale esse plugin para phonegap: https://build.phonegap.com/plugins/505
E use a configuração correta como abaixo, para controlar a sobreposição da visualização da web:
Para mim, com Phonegap 3.3.0 funciona.
Mais informações, na página do projeto Github: https://github.com/phonegap-build/StatusBarPlugin
fonte
Para ocultar a barra de status, adicione o seguinte código no arquivo
MainViewController.m
sob a função-(void)viewDidUnload
fonte
A resposta https://stackoverflow.com/a/19249775/1502287 funcionou para mim, mas tive que mudá-la um pouco para que funcionasse com o plug-in da câmera (e possivelmente outros) e uma metatag de janela de visualização com "height = device- height "(não definir a parte da altura faria com que o teclado aparecesse sobre a vista no meu caso, escondendo algumas entradas ao longo do caminho).
Cada vez que você abriria a visualização da câmera e retornaria ao seu aplicativo, o método viewWillAppear seria chamado e sua visualização diminuiria em 20px.
Além disso, a altura do dispositivo para a janela de visualização incluiria 20 pixels extras, tornando o conteúdo rolável e 20 pixels mais alto do que a visualização da web.
Aqui está a solução completa para o problema da câmera:
Em MainViewController.h:
Em MainViewController.m:
Agora, para o problema da janela de visualização, em seu ouvinte de evento deviceready, adicione isto (usando jQuery):
Aqui está a janela de visualização que uso para outras versões:
E tudo funciona bem agora.
fonte
Tente acessar o
(app name)-Info.plist
arquivo do aplicativo no XCode e adicione as chavesIsso funciona para mim sem problemas.
fonte
Para Cordova 3.1+, existe um plugin que lida com a mudança no comportamento da barra de status para iOS 7 ou superior.
Isso está muito bem documentado aqui , incluindo como a barra de status pode ser revertida para seu estado pré-iOS7.
Para instalar o plug-in, execute:
Em seguida, adicione isso ao config.xml
fonte
Eu resolvo meu problema instalando o
org.apache.cordova.statusbar
e adicionando no meu topoconfig.xml
:Essas configurações funcionam apenas para iOS 7 ou superior
Referência: http://devgirl.org/2014/07/31/phonegap-developers-guid/
fonte
Veja o novo plug-in Cordova StatusBar que aborda exatamente esse problema. http://docs.icenium.com/trou troubleshooting/ ios7-status- bar# solution opção # 3
fonte
Eu uso o seguinte trecho de código para adicionar uma classe ao corpo, se iOS7 for detectado. Eu, então, estilo essa classe para adicionar uma
20px
margem no topo do meu contêiner. Certifique-se de ter o plugin "device" instalado e que este código está dentro do evento "deviceready".Pela leitura, ouvi dizer que a próxima atualização do Phonegap (3.1 eu acredito) oferecerá um suporte melhor às mudanças na barra de status do iOS7. Portanto, isso pode ser necessário apenas como uma correção de curto prazo.
fonte
A resposta de Ludwig funcionou para mim.
Para quem usou sua resposta e agora está procurando mudar a cor da margem branca (pode parecer trivial, mas me deixou perplexo), veja isto:
Como posso alterar a cor de fundo do UIWebView após deslizar o UIWebView para baixo para corrigir o problema de sobreposição da barra de status do iOS7?
fonte
Outra maneira é tornar compatível com versões anteriores . Faça o HTML de acordo com
iOS 7
(com uma margem extra de 20 px no topo) para dar aquelafull screen
aparência e corte essa margem extra paraiOS < 7.0
. Algo como o seguinte emMainViewController.m
:Esta solução não deixará uma barra preta na parte superior
iOS 7.0
e superior, o que um usuário moderno do iOS achará estranho e antigo .fonte
Escreva o seguinte código dentro de AppDelegate.m no evento didFinishLaunchingWithOptions (exatamente antes de sua última linha de código " return YES; "):
Vou aguardar seu feedback! :)
fonte
se usarmos o plugin de câmera para a galeria de imagens, a barra de status voltará para corrigir esse problema, adicione esta linha
para
função dentro de CVDCamera.m na lista de plug-ins
fonte
Escreva o seguinte código dentro de AppDelegate.m no evento didFinishLaunchingWithOptions na inicialização.
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
E corrigir para iOS 7 acima e acima.
fonte
Para manter a barra de status visível em retrato, mas ocultá-la em paisagem (ou seja, tela inteira), tente o seguinte:
Em
MainViewController.h
:Em
MainViewController.m
:Esta é uma combinação do que encontrei neste e nas discussões StackOverflow vinculadas, algum código do plug-in Cordova StatusBar (para não codificar o valor de 20px) e alguns encantamentos de minha parte (não sou um desenvolvedor iOS, portanto Eu me atrapalhei para encontrar essa solução).
fonte
Em primeiro lugar, adicione o plugin Device em seu projeto. O Id do plug-in é: org.apache.cordova.device e o repositório é: https://github.com/apache/cordova-plugin-device.git
Depois disso, use esta função e chame-a em todas as páginas ou telas: -
fonte
A melhor maneira de controlar o fundo da barra de status - 2017
Após frustração contínua, muitas pesquisas na Internet, estas são as etapas que você precisa seguir:
Use o seguinte código em onDeviceReady
Funciona para mim em iOS e Android.
Boa sorte!
fonte