Como alterar a cor do texto da Barra de Estado no iOS

A minha aplicação tem um fundo escuro, mas no iOS 7 a barra de estado tornou-se transparente. Então eu posso'não vejo nada lá, apenas o indicador verde da bateria no canto. Como posso mudar a cor do texto da barra de status para branco, como se estivesse na tela inicial?

Solução
  1. Defina o UIViewControllerBasedStatusBarAppearance como YES no arquivo .plist.

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

  3. Adicione o seguinte método:

     - (UIStatusBarStyle)preferidoStatusBarStyle
     {
         retornar UIStatusBarStyleLightContent;
     }

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

Swift 3 - Isto funcionará com controladores dentro do 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
}

**Swift 5 e SwiftUI***

Para SwiftUI crie um novo arquivo swift chamado HostingController.swift.

import Foundation
import UIKit
import SwiftUI

class HostingController: UIHostingController {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Em seguida, altere as seguintes linhas de código no `SceneDelegate.swift'.

window.rootViewController = UIHostingController(rootView: ContentView())

para

window.rootViewController = HostingController(rootView: ContentView())
Comentários (18)

Isto está documentado no iOS 7 UI Transition Guide, que você precisa de um ID de desenvolvedor Apple para acessar diretamente. O trecho relevante:

Porque a barra de estado é transparente, a vista por trás dela mostra-se através dela. [...] Utilize uma constante `UIStatusBarStyle' para especificar se o conteúdo da barra de status 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 a partir de um controlador vew individual e alterá-lo enquanto o aplicativo roda. Para optar por este comportamento, adicione a chave UIViewControllerBasedStatusBarAppearance' ao arquivoInfo.plist' de um aplicativo e dê a ele o valor `YES'.

Eu definitivamente recomendaria dar uma olhada no documento, que, mais uma vez, você pode acessar com seu ID de desenvolvedor Apple.

Comentários (3)

Isto parece ser um problema com a actual construção do Xcode e do iOS 7.

Alguns conteúdos relacionados nos Fóruns de Desenvolvedores Apple está em uma busca por UIStatusBarStyleLightContent em "iOS 7 Beta Livability" nos Fóruns de Desenvolvedores Apple* (atualmente 32 posts).

Deparei-me com ele a tentar pô-lo na versão leve.

(Isto é apenas um seguimento da resposta do Aaron).

Comentários (0)