Depois de ler todas as sugestões e experimentar algumas coisas, consegui que isso funcionasse para controladores de exibição específicos usando as seguintes etapas:
Primeiro passo:
Abra seu info.plist e insira uma nova chave denominada " Exibir aparência da barra de status baseada em controlador " para NÃO
Segundo passo (apenas uma explicação, não é necessário implementar isso):
Normalmente, colocamos o seguinte código no método application (_: didFinishLaunchingWithOptions :) do AppDelegate,
Swift 2
UIApplication.sharedApplication().statusBarStyle = .LightContent
Swift 3
UIApplication.shared.statusBarStyle = .lightContent
mas isso afeta statusBarStyle
todos os ViewControllers.
Então, como fazer isso funcionar para ViewControllers específicos - Etapa final:
Abra o arquivo viewcontroller no qual deseja alterar statusBarStyle
e insira o seguinte código viewWillAppear()
,
Swift 2
UIApplication.sharedApplication().statusBarStyle = .LightContent
Swift 3
UIApplication.shared.statusBarStyle = .lightContent
Além disso, implemente o viewWillDisappear()
método para esse viewController específico e coloque as seguintes linhas de código,
Swift 2
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default
}
Swift 3
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.shared.statusBarStyle = UIStatusBarStyle.default
}
Esta etapa primeiro altera o statusBarStyle
para o viewcontroller específico e depois o altera para default
quando o viewcontroller específico desaparecer. A não implementação da viewWillDisappear()
alteração mudará statusBarStyle
permanentemente para o novo valor definido deUIStatusBarStyle.LightContent
Status bar is initially hidden = YES
no arquivo info.plist, "Exibir aparência da barra de status com base no controlador = NÃO" fará com que a barra de status fique oculta.