Gostaria de remover a barra de status na parte superior da tela.
Isso não funciona:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
application.statusBarHidden = true
return true
}
Eu também tentei:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var controller = UIViewController()
application.statusBarHidden = true
controller.setNeedsStatusBarAppearanceUpdate()
var view = UIView(frame: CGRectMake(0, 0, 320, 568))
view.backgroundColor = UIColor.redColor()
controller.view = view
var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.center = CGPointMake(160, 284)
label.textAlignment = NSTextAlignment.Center
label.text = "Hello World"
controller.view.addSubview(label)
self.window!.rootViewController = controller
self.window!.makeKeyAndVisible()
return true
}
Respostas:
Você realmente deve implementar prefersStatusBarHidden no (s) seu (s) controlador (es) de visualização:
Swift 3 e posterior
fonte
Adicione o código, dentro do método
FEITO! Execute seu aplicativo e sem mais barra de status!
fonte
Swift 3
Em
Info.plist
definidoView controller-based status bar appearance
comoNO
E ligar
UIApplication.shared.isStatusBarHidden = true
fonte
Se você deseja ocultar e trazer de volta a barra de status com o toque no botão , ao mesmo tempo em que apresenta e dispensa o menu deslizante , pop-ups , etc., você pode usar este método: -
Para ocultar a barra de status: -
Para retornar a barra de status: -
fonte
prefersStatusBarHidden
propriedade como o que já foi mencionado.prefersStatusBarHidden
é que as visualizações vinculadas à barra de status usando restrições e também as barras de navegação se moverão de maneira incorreta se você ativar / desativar a barra de statusprefersStatusBarHidden
. No momento, apenas essa resposta parece contornar isso.prefersStatusBarHidden
atrapalhará sua restrição. Até agora, isso faz o trabalho. No entanto, estou usando um pequeno wrapper para evitar o uso de singletons, você pode encontrá-lo aquise você preferir uma abordagem visual em vez de codificá-la, use este método: em seu
info.plist
basta adicionar
View controller-based status bar appearance
aNO
e
Status bar is initially hidden
comoYES
fonte
fonte
Atualização para iOS 10 / Swift 3.0
Não é mais uma função, agora uma propriedade ...
fonte
get { }
se você não tiver umset
, basta escreverreturn true
no Swift 3.x:
fonte
Vá para o seu Info.plist e adicione duas chaves:
fonte
Portanto, o problema aqui não tem nada a ver com Swift, mas apenas como a aparência da barra de status é tratada no iOS 7.
Por padrão, os controladores de exibição controlam individualmente a aparência da barra de status quando estão na tela. Se você quiser usar esse método para controlar a barra de status, poderá substituir os métodos a seguir para os controladores de exibição para os quais deseja modificar a aparência:
prefersStatusBarHidden
,preferredStatusBarStyle
,preferredStatusBarAnimation
,No seu caso, você apenas implementaria
prefersStatusBarHidden
e retornariatrue
.A outra maneira seria controlar a aparência da barra de status no nível do aplicativo. Parece ser o que você está realmente tentando fazer (definindo
application.statusBarHidden
).Para fazer isso funcionar, você precisa abrir o
Info.plist
arquivo do seu aplicativo, adicionar a chaveUIViewControllerBasedStatusBarAppearance
e atribuir um valor deNO
.fonte
Na verdade, eu mesmo descobri isso. Vou adicionar minha solução como outra opção.
fonte
Ok, isso se tornou um problema para mim, pois o iOS 9 não suporta nenhum método acima do mencionado pelas pessoas aqui, como
UIApplication.sharedApplication().statusBarHidden = true
oue
funciona, mas não fornece solução programável onde eu posso alterar em uma condição. (
statusBarHidden = true
estatusBarHidden = false
como fizemos antes).Solução para essa loucura:
Ao adicionar a
prefersStatusBarHidden()
gosto abaixo você pode controlar programaticamente a esconder e mostrar de barra de status sem adicionarUIViewControllerBasedStatusBarAppearance
definição para o seu info.plist :use-o assim em todo o seu código:
OU
fonte
prefersStatusBarHidden
faz algum sentido? Eu acho que você quer dizerself.setNeedsStatusBarAppearanceUpdate()
depois deshowStatusBar
atribuirApenas para adicionar, ao substituir o
prefersStatusBarHidden
método ou a variável, oView controller-based status bar appearance
arquivo Info.plist deve ser SIM, caso contrário, a substituição não terá efeitofonte
no Swift 4.2, é uma propriedade agora.
fonte
No meu caso, eu estava procurando a barra de status para ocultar / mostrar sob demanda; em vez de apenas quando a vista é carregada ou desaparece.
swift 3.x
fonte
Swift 5: no controlador de vista principal ou no controlador de navegação principal, se você tiver,
E "Exibir aparência da barra de status baseada no controlador" no plist deve ser SIM, caso contrário, o código acima não será chamado.
Se você deseja ocultar a barra de status ao iniciar o aplicativo, "A barra de status está oculta inicialmente" deve ser SIM. Isso pode impedir que a imagem de inicialização seja distorcida quando uma barra azul extra é exibida na parte superior da tela.
fonte
Uma solução que funciona para mim; se você deseja ocultar a barra de status em um controlador de exibição específico durante o carregamento:
Atenção: se você definir a chave " Exibir aparência da barra de status baseada no controlador " como " NÃO " em suas informações, lembre-se de que o código acima não funciona. Você deve definir a chave como " SIM " ou removê- la de info.plist
fonte
No seu projeto Geral-> Informações de Implantação-> Estilo da barra de status, selecione a opção Ocultar barra de status Nota: - oculta a barra de status em todo o aplicativo
fonte
Para o Swift 4+, tente o seguinte código (testado no Swift 4.0, 4.1 - IOS 10, 11):
fonte
Swift 5+
No meu caso, preciso atualizar a barra de status oculta com base em algumas condições.
Por isso, crio uma controlller base
BaseViewController
que contém novas propriedadeshideStatusBar
.Outros controladores de exibição são subclasses desse controlador base. Finalmente, quando quero atualizar o comportamento da barra de status, preciso alterar apenas esse
hideStatusBar
valor.Como usar
Demo
Aqui está uma demonstração que estou usando
UIView.animate(...)
para tornar a transição mais suave.fonte
Estou usando o Xcode 8.1 (8B62) com um destino de implantação definido para 10.1 e não tive muita sorte com as opções de substituição mencionadas acima. No entanto, verificar a opção "Ocultar barra de status" em Informações de implantação fez o truque para mim.
Projeto> Geral
Eu espero que isso ajude.
fonte
Se você estiver apresentando o controlador de exibição modalmente, tente
fonte
fonte
Você pode usar esse código em seu
ViewController
Class
scope
fonte
No seu Projeto-> Geral-> Informações de implantação
Estilo da barra de status: -
acabou de marcar Ocultar barra de status (iOS 10)
fonte
Swift 4
fonte
Atualizado para iOS 13 e Swift 5
Se nenhuma das respostas acima funcionar para você. Verifique seu plist para ver se você tem isso:
"Exibir aparência da barra de status baseada no controlador"
Em caso afirmativo, certifique-se de configurá-lo para SIM !!!!!
Em seguida, o código a seguir funcionará.
fonte