Alterando a cor do texto da barra de status na tela inicial iOS 7

98

Eu sei que já existem algumas questões de stackoverflow que dizem como alterar a barra de status para todos os controladores de exibição. No momento, estou mudando a cor da barra de status desta forma:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

No application:DidFinishLaunching

Além disso, alterei o valor de UIViewControllerBasedStatusBarAppearanceno plist para NO. No entanto, na tela inicial, ele ainda mostra o texto da barra de status com a cor preta.

É possível alterar a cor do texto da barra de status na tela inicial ?

Tiago Almeida
fonte
O que você quer dizer com 'ainda mostra a barra de status com a cor preta': se o seu código funcionar, a fonte da barra de status deve ser branca, a cor de fundo da barra de status depende da sua imagem inicial (que agora deve incluir a altura da barra de status - 20 pixels)
Vinzzz
Desculpe, eu realmente perdi a palavra do texto. Estou mudando apenas a cor do texto da barra de status. Posso alterá-lo após a tela inicial, mas não posso alterá-lo quando a tela inicial estiver acontecendo.
Tiago Almeida

Respostas:

224

No arquivo plist do projeto, adicione a propriedade "Estilo da barra de status" (a chave é UIStatusBarStyle). Em seguida, ignore todos os valores possíveis listados na lista suspensa para esta propriedade e digite UIStatusBarStyleLightContent.

E você não tem que definir UIViewControllerBasedStatusBarAppearancea NOsua plist, você pode definir o preferredStatusBarStyleque você quer seus controladores de vista.

Vinzzz
fonte
Existe alguma maneira de tornar isso compatível com uma barra de status colorida no iOS 6?
Rafael Nobre
1
A cor do texto da barra de status é branco ou preto. O plano de fundo da barra vem de sua imagem inicial e, em seguida, da visualização do viewController se ela se estender abaixo das barras.
Vinzzz
1
Depois de TONELADAS de métodos diferentes, este FINALMENTE funcionou (com UIViewControllerBasedStatusBarAppearance definido como NÃO). Você é um herói.
Tamás Sengel
você também pode fazer isso por meio do código UIApplication.sharedApplication (). statusBarStyle = .LightContent. Eu faço isso em AppDelegate
Yasmin Tiomkin
@Yasmin: para mudar a cor DEPOIS da tela inicial, essa solução já fazia parte da questão;)
Vinzzz
33

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

No arquivo plist do seu projeto :

  • Estilo da barra de status: UIStatusBarStyleLightContent
  • Ver a aparência da barra de status baseada no controlador: NO
  • A barra de status está inicialmente oculta: NO
Lucas
fonte
A resposta aceita é boa, mas não funcionou em todos os meus controladores de visualização sem fazer o segundo item acima. Obrigado!
Clifton Labrum,
"Ver aparência da barra de status baseada no controlador: YES" ainda parece funcionar (iOS 9)
Nicolas Miari
19

Você pode fazer o seguinte para obter a barra de status de cor clara em todo o aplicativo.

  1. Selecione o nome do projeto no navegador de projetos.
  2. Selecione o nome de um destino na lista na coluna esquerda do editor de projeto.
  3. Clique em Geral na parte superior do editor de projeto.
  4. Definir estilo da barra de status -> Luz

Em seu arquivo plist, adicione os seguintes valores:

  1. Estilo da barra de status - UIStatusBarStyleLightContent
  2. Ver a aparência da barra de status baseada no controlador - NÃO

Isso o ajudará a obter a barra de status na cor BRANCA em todo o aplicativo, incluindo SPLASH SCREEN.

Anooj VM
fonte
7

Defina UIViewControllerBasedStatusBarAppearancecomo Não no plist

Em seguida, adicione o seguinte código na opção de lançamento concluído

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

Por favor, siga este código funcionou para mim

Preejith augustine
fonte
isso está mostrando um texto branco na barra de status enquanto meu fundo também está claro. como posso mostrar texto em preto
Mangesh
Mangesh on the Target vá para as configurações gerais, onde você terá a opção de definir o estilo da barra de status
Preejith augustine,
Na verdade, você poderia escrever a primeira linha um pouco mais simples usando a sintaxe de pontos, como esta: if (UIDevice.currentDevice.systemVersion.floatValue >= 7) {
Todd Lehman
2

Aqui estão as orientações / instruções da Apple sobre a alteração da barra de status.

Aqui está - Como alterar o estilo da barra de status:

Se você deseja definir o estilo da barra de status e o nível do aplicativo, defina UIViewControllerBasedStatusBarAppearancecomo NOem seu arquivo `.plist '.

se você deseja definir o estilo da barra de status, no nível do controlador de visualização, siga estas etapas:

  1. Defina UIViewControllerBasedStatusBarAppearancecomo YESno .plistarquivo, se precisar definir o estilo da barra de status apenas no nível UIViewController.
  2. Na função de adição viewDidLoad - setNeedsStatusBarAppearanceUpdate

  3. substituir preferredStatusBarStyle em seu controlador de visualização.

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Defina o valor de .plist de acordo com o nível de configuração do estilo da barra de status. insira a descrição da imagem aqui


Você pode definir a cor de fundo para a barra de status durante a inicialização do aplicativo ou durante viewDidLoad do seu controlador de visualização.

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}



Aqui está o resultado:

insira a descrição da imagem aqui

Krunal
fonte
1

Você pode fazer o seguinte para obter a barra de status de cor clara em todo o aplicativo.

Selecione o nome do projeto no navegador de projetos. Selecione o nome de um destino na lista na coluna esquerda do editor de projeto. Clique em Geral na parte superior do editor de projeto. Definir estilo da barra de status -> Luz

Usman Nisar
fonte