Eu tenho um ViewController
que está dentro de um UINavigationcontroller
, mas a barra de navegação está oculta. Quando executo o aplicativo no iOS 7, a barra de status é exibida no topo da minha visualização. Há alguma maneira de evitar isto?
Não quero escrever nenhum código específico do sistema operacional.
Tentei definir View controller-based status bar appearance
para NO
, mas não corrigiu o problema.
Respostas:
O Xcode 5 foi
iOS 6/7 Deltas
feito especificamente para resolver esse problema. No storyboard, movi minhas visualizações 20 pixels para baixo para parecer certo no iOS 7 e, a fim de torná-lo compatível com iOS 6, mudeiDelta y
para -20.Como meu storyboard não usa layout automático, para redimensionar a altura das visualizações corretamente no iOS 6, tive que definir
Delta height
tambémDelta Y
.fonte
Se você simplesmente NÃO deseja nenhuma barra de status, precisa atualizar seu plist com estes dados: Para fazer isso, no plist, adicione essas 2 configurações:
No iOS 7, espera-se que você projete seu aplicativo tendo em mente uma barra de status transparente sobreposta. Veja o novo aplicativo iOS 7 Weather, por exemplo.
fonte
Este é o comportamento padrão
UIViewController
do iOS 7. A visualização será em tela inteira, o que significa que a barra de status cobrirá a parte superior da visualização.Se você tiver um
UIViewController
dentro de aUINavigationController
e a navigationBar estiver visível, você pode ter o seguinte código no seuviewDidLoad
ou ter uma imagem de fundo para a navigationBar fazer o truque.Se você tiver a barra de navegação oculta, terá que ajustar todos os elementos do UIView deslocando 20 pontos. Não vejo outra solução. Usar layout automático ajudará um pouco.
Aqui está o código de amostra para detectar a versão do iOS, se você quiser compatibilidade com versões anteriores.
fonte
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
Única solução de trabalho que fiz por mim mesmo.
Aqui está minha subclasse UIViewController https://github.com/comonitos/ios7_overlaping
1 subclasse de UIViewController
2 Subclasse seu window.rootViewController dessa classe.
3 Voila!
4 Adicione isso para deixar sua barra de status branca logo após a [self.window makeKeyAndVisible]; !!!
fonte
Adicionar chave no plist --- Ver aparência da barra de status baseada no controlador: NÃO
fonte
Para ocultar a barra de status no ios7, siga estas etapas simples:
No Xcode, vá para a
Resources
pasta " " e abra "(app name)-Info.plist file
".View controller based status bar appearance
chave " " e defina seu valor "NO
"Status bar is initially hidden
chave " " e defina seu valor "YES
"Se as chaves não estiverem lá, você pode adicioná-las selecionando "
information property list
" na parte superior e clicando no ícone +fonte
Se você quiser ocultá-lo completamente e apenas evitar lidar com ele, isso funcionará bem.
referência https://stackoverflow.com/a/18873777/1030449
fonte
Se estiver usando
xib
s, uma implementação muito fácil é encapsular todas as subvisualizações dentro de uma visão de contêiner com sinalizadores de redimensionamento (que você já usará para compatibilidade de 3,5 "e 4") para que a hierarquia de visão seja parecida com estae, em seguida
viewDidLoad
, faça algo assim:Dessa forma, as pontas não precisam ser modificadas para compatibilidade com iOS 7. Se você tiver um plano de fundo, ele pode ser mantido do lado de fora
containerView
e cobrir toda a tela.fonte
Isso é tudo o que é necessário para remover a barra de status.
fonte
Para barra de navegação:
Escrevendo este código:
apenas fez o truque para mim.
fonte
A resposta de Vincent edgeForExtendedLayout funcionou para mim.
Essas macros ajudam a determinar a versão do sistema operacional, tornando mais fácil
adicione essas macros ao arquivo prefix.pch do seu projeto e pode ser acessado em qualquer lugar
fonte
Eu postei minha resposta para outra postagem com a mesma pergunta com esta.
No Guia de transição do Apple iOS7, https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/AppearanceCustomization.html#//apple_ref/doc/uid/TP40013174-CH15-SW1
Especificamente
automaticallyAdjustsScrollViewInsets=YES
eset self.edgesForExtendedLayout = UIRectEdgeNone
funciona para mim quando não quero a sobreposição e tenho umtableviewcontroller
.fonte
Se você quiser que "Use Autolayout" seja habilitado a qualquer custo, coloque o seguinte código em viewdidload.
fonte
Minha barra de status e barra de navegação se sobrepõem após retornar da visualização horizontal do YTPlayer. Aqui está minha solução depois de tentar a versão @comonitos, mas não funciona no meu iOS 8
Basta chamar esta função sempre que quiser fixar a posição da barra de navegação. Eu chamei YTPlayerViewDelegate's
playerView:didChangeToState:
fonte