Como alterar a cor do texto da barra de status no iOS

Meu aplicativo tem um fundo escuro, mas no iOS 7 a barra de status ficou transparente. Então eu não consigo ver nada lá, apenas o indicador verde da bateria no canto. Como posso alterar a cor do texto da barra de status para branco, como na canvas inicial?

  1. Defina o UIViewControllerBasedStatusBarAppearance como YES no arquivo .plist.

  2. No viewDidLoad faça um [self setNeedsStatusBarAppearanceUpdate];

  3. Adicione o seguinte método:

     - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } 

Nota : Isto não funciona para controladores dentro do UINavigationController , por favor, veja o comentário de Tyson abaixo 🙂

Swift 3 – Isso funcionará controladores dentro UINavigationController . Adicione este código dentro do seu controlador.

 // Preferred status bar style lightContent to use on dark background. // Swift 3 override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } 

Como alternativa, você pode desativar a aparência da barra de status baseada no controlador de visualização:

  1. Defina a View controller-based status bar appearance como NO em seu Info.plist .
  2. Chame [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Nota: Este método foi descontinuado no iOS9. Use preferredStatusBarStyle no UIViewController. (veja Apple Developer Library )

Você pode fazer isso sem escrever qualquer linha de código!
Faça o seguinte para tornar a cor do texto da barra de status branca em todo o aplicativo

No seu arquivo plist do projeto :

  • Estilo da barra de status: Estilo Transparent black style (alpha of 0.5)
  • Exibir a aparência da barra de status baseada no controlador: NO
  • Barra de status está inicialmente oculta: NO

Nota: A resposta mais votada não funciona no iOS 7/8

No Info.plist, defina ‘Exibir a aparência da barra de status baseada no controlador’ como NÃO

Em AppDelegate add

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

para

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ ...... ... } 

Esta solução funciona para o iOS 7/8

Para mim, nada aconteceu com o uso de todas as coisas nas outras respostas (e de outras fonts / documentação). O que ajudou foi definir o estilo da barra de navegação como “preto” no XIB. Isso mudou o texto para branco sem nenhum código.

Digite a descrição da imagem aqui

Nada disso funcionou para mim, então aqui está uma solução de trabalho …

No Info.plist , adicione uma linha:

UIViewControllerBasedStatusBarAppearance e defina o valor NO .

Em seguida, em AppDelegate in didFinishLaunchingWithOptions , adicione estas linhas:

 [application setStatusBarHidden:NO]; [application setStatusBarStyle:UIStatusBarStyleLightContent]; 

Você não precisa fazer nenhum código para isso

Você precisa adicionar a chave “Exibir a aparência da barra de status baseada no controlador” em info.plist da seguinte maneira: insira a descrição da imagem aqui

& defina seu tipo de valor como Boolean & value como NO. Em seguida, clique nas configurações do projeto e, em seguida, clique na guia Geral e, em Informações da implantação, defina o estilo da barra de status preferencial como .Light da seguinte forma:

insira a descrição da imagem aqui

É isso aí.

Apenas dois passos da seguinte forma:

Passo 1:

Na guia Informações do project target do project target , Adicionar linha:

UIViewControllerBasedStatusBarAppearance , definir valor NO .

Passo 2:

No projeto AppDelegate.m :

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ … [application setStatusBarStyle:UIStatusBarStyleLightContent]; … } 

Isso funciona no Golden Master iOS 7 e Xcode 5 GM seed e iOS7 SDK lançado em 18 de setembro de 2013 (pelo menos com o controlador de navegação oculto):

  1. Defina the UIViewControllerBasedStatusBarAppearance como NO no Info.plist .

  2. No método ViewDidLoad ou em qualquer lugar, onde você deseja alterar o estilo da barra de status: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Caso o seu UIViewController esteja dentro de um UINavigationController você terá que configurar o BarStyle:

 -[UINavigationBar setBarStyle:UIBarStyleBlack] 

Resposta Original está aqui

https://devforums.apple.com/message/844264#844264

Se você tiver um controlador de navegação incorporado criado por meio do Interface Builder , defina o seguinte em uma class que gerencie seu controlador de navegação:

 -(UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; } 

Isso deve ser tudo que você precisa.

Estou usando o Xcode 6 beta 5 em um projeto Swift , para um aplicativo iOS 7.

Aqui está o que eu fiz e funciona:

info.plist:

Digite a descrição da imagem aqui

Em AppDelegate.m, adicione o seguinte.

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; } 

E no arquivo Plist, defina ‘Exibir a aparência da barra de status baseada no controlador’ como NO.

Simply In Appdelegate

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

Bem, isso está realmente funcionando como um pedaço de bolo para mim.

Vá para o info.plist do seu aplicativo.

  1. Definir a View controller-based status bar appearance para NO
  2. Definir o Status bar style para UIStatusBarStyleLightContent

Em seguida, vá para o delegado do seu aplicativo e cole o código a seguir, onde você define o RootViewController do seu Windows.

 #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)]; view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0]; [self.window.rootViewController.view addSubview:view]; } 

Bingo. Está funcionando para mim.

  1. Vá para Project -> Target ,

  2. Em seguida, defina o Status Bar Style como Light . Ela torna a barra de status branca na canvas de boot. Configuração do Projeto

  3. Em seguida, defina a View controller-based status bar appearance igual a NO em Info.plist .

O iOS 7 permite que controladores de visualização individuais determinem a aparência da barra de status, conforme descrito pela documentação do desenvolvedor da Apple:

O iOS 7 oferece aos controladores de visualização a capacidade de ajustar o estilo da barra de status enquanto o aplicativo está em execução. Uma boa maneira de alterar dinamicamente o estilo da barra de status é implementar o preferredStatusBarStyle e – dentro de um bloco de animação – atualizar a aparência da barra de status e chamar setNeedsStatusBarAppearanceUpdate .

Definir a aparência da barra de status globalmente é um processo de duas etapas.

Primeiro, você precisa dizer ao iOS que não deseja definir a aparência da barra de status com base em visualização por visualização.

Então você precisa assumir o controle e definir o novo estilo da barra de status global.

Para desabilitar o controle da barra de status de exibição por visualização, você precisará definir a propriedade de View controller-based status bar appearance em Info.plist .

Abra o Navegador de Projetos e selecione o projeto para seu aplicativo iOS e, em seguida, selecione a guia Informações.

Passe o mouse sobre uma linha e clique no sinal de adição que aparece para adicionar uma nova propriedade ao seu .plist .

Entre View controller-based status bar appearance no campo Key e, em seguida, verifique se o campo Type está definido como Boolean . Por fim, insira NO no campo Valor.

Para definir um estilo global para a barra de status, adicione outra propriedade na guia Informações com uma chave do Status bar style de Status bar style , um tipo de String e um Opaque black style .

Aqui está uma postagem do blog com um pouco mais de detalhes e um código de exemplo:

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/

Mudança na informação PLIST No Swift 3 é muito fácil apenas com 2 passos. Vá para o seu info.plist e mude a View controller-based status bar appearance para “NO”. Em seguida, no Appdelegate, basta adicionar essa linha no método didfinishlaunchingwithoptions

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. UIApplication.shared.statusBarStyle = .lightContent return true } 

Resposta atualizada para o Xcode GM Seed:

  1. No Info.plist coloque a View controller-based status bar appearance como NO

  2. No projeto, defina:

    Digite a descrição da imagem aqui

  3. Em ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Não há necessidade de fazer algum extra, basta escrever esse código em sua viewController e obter a barra de status em branco

 - (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;} 

Eu acho que todas as respostas realmente não apontam o problema, porque todas elas funcionam em cenários específicos. Mas se você precisa cobrir todos os casos, siga os pontos abaixo:

Dependendo de onde você precisa do estilo de luz da barra de status, você deve sempre ter em mente estes 3 pontos:

1) Se você precisar da barra de status na canvas de lançamento ou em outros lugares, onde você não pode controlá-lo (não em controladores de exibição, mas sim em alguns elementos / momentos controlados pelo sistema como Launch Screen) Você vai para as configurações do seu projeto Configurações do projeto

2) se você tiver um controlador dentro de um controlador de navegação Você pode alterá-lo no construtor de interface da seguinte maneira:

a) Selecione a barra de navegação do seu controlador de navegação Selecione a barra de navegação do seu controlador de navegação

b) Em seguida, defina o estilo da barra de navegação para “Black”, porque isso significa que você terá um fundo “preto” -> escuro em sua barra de status, portanto, ele definirá a barra de status como branca

insira a descrição da imagem aqui

Ou faça no código da seguinte forma

 navigationController?.navigationBar.barStyle = UIBarStyle.Black 

3) Se você tiver apenas o controlador que precisa ter seu próprio estilo de barra de status e não está incorporado em alguma estrutura de contêiner como um UINavigationController

Defina o estilo da barra de status no código para o controlador:

Configurando o estilo da barra de status no código

Simplesmente chamando

 [[UINavigationBar appearance] setBarStyle:UIBarStyleBlack]; 

no

 -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { } 

método do meu AppDelegate funciona muito bem para mim no iOS7.

Isso está documentado no Guia de transição da interface do usuário do iOS 7 , no qual você precisa de um ID de desenvolvedor da Apple para acessar diretamente. O trecho relevante:

Como a barra de status é transparente, a vista por trás é exibida. […] Use uma constante UIStatusBarStyle para especificar se o conteúdo da barra de UIStatusBarStyle deve ser escuro ou claro:

UIStatusBarStyleDefault exibe conteúdo escuro. […]

UIStatusBarStyleLightContent exibe conteúdo leve. Use quando o conteúdo escuro estiver atrás da barra de status.

Também possivelmente de interesse:

No iOS 7, você pode controlar o estilo da barra de status de um controlador individual e alterá-lo enquanto o aplicativo é executado. Para ativar esse comportamento, adicione a chave UIViewControllerBasedStatusBarAppearance ao arquivo Info.plist um aplicativo e forneça o valor YES .

Eu definitivamente recomendo dar uma olhada no documento, que, novamente, você pode acessar com seu ID de desenvolvedor da Apple.

Se você quiser o mesmo resultado com o Swift, você pode usar este código no seu arquivo AppDelegate.swift:

 UINavigationBar.appearance().barStyle = .BlackTranslucent 

E o texto da sua barra de status será branco :-)!

Eu fiz algumas coisas diferentes e isso funciona para mim.

Sem alterações no código, fiz o config meu arquivo .plist assim:

  • Exibir a aparência da barra de status baseada no controlador> NO
  • Estilo da barra de status> UIStatusBarStyleLightContent (string simples)

Espero que ajude.

editar

Para cada controlador de exibição, altero a propriedade Métricas Simuladas da “barra de status”, no storyboard, de “inferida” para “Conteúdo leve”

em info.plist, defina o valor do campo NÃO Visualize a aparência da barra de status baseada no controlador e configure a luz de estilo da barra de status na configuração geral> destino.

Deixe-me dar uma resposta completa para sua pergunta. Alterar a cor do texto da barra de status é muito fácil, mas é um pouco confuso no iOS 7 especialmente para iniciantes.

Se você está tentando mudar a cor de preto para branco no Storyboard selecionando o controlador de visualização e indo para o Simulated Metrics no lado direito, ele não funcionará e não sei por quê. Deve funcionar mudando assim, mas de qualquer forma.

Em segundo lugar, você não encontrará a propriedade UIViewControllerBasedStatusBarAppearance no seu plist, mas por padrão não está lá. Você tem que adicioná-lo clicando no botão + e, em seguida, defina-o como NÃO.

cor do texto da barra de status do ios 7

Por último, você tem que ir para o seu arquivo AppDelegate.m e adicionar o seguinte no método didFinishLaunchingWithOptions, adicione a seguinte linha:

  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

Isso mudará a cor para branco para todos os seus controladores de visualização. Espero que isto ajude!

Se você ainda quiser usar a View controller-based status bar appearance em info.plist configurada como YES, o que significa que você pode alterar a barra de status de cada controlador de visualização, use o seguinte texto branco na barra de status em ViewDidLoad:

 [[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent]; 

Apenas para resumir, edite seu projeto Info.plist e adicione:

View controller-based status bar appearance : NO

Status bar style : Opaque black style

ou se você tem chave / valor bruto

UIViewControllerBasedStatusBarAppearance : NO

UIStatusBarStyle : Opaque black style

A chave para fazer isso funcionar é que apenas o controlador de visualização em canvas cheia determina o estilo da barra de status.

Se você estiver usando um controlador de navegação e desejar controlar a barra de status com base no controlador por visualização, será necessário subclassificar o UINavigationController e implementar o preferredStatusBarStyle de forma que ele retorne a preferência do topViewController.

Certifique-se de alterar a referência de class em sua cena de storyboard deUINavigationController para sua subclass (por exemplo, MyNavigationController no exemplo abaixo).

(O seguinte funciona para mim. Se o seu aplicativo é baseado em TabBar, você vai querer fazer algo semelhante, subclassificando o UITabBarController, mas eu não tentei isso).

 @interface MyNavigationController : UINavigationController @end @implementation MyNavigationController - (UIStatusBarStyle)preferredStatusBarStyle { return self.topViewController.preferredStatusBarStyle; } @end