Meu aplicativo tem um fundo escuro, mas no iOS 7 a barra de status ficou transparente. Portanto, não vejo 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 tela inicial?
Meu aplicativo tem um fundo escuro, mas no iOS 7 a barra de status ficou transparente. Portanto, não vejo 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 tela inicial?
Respostas:
Defina UIViewControllerBasedStatusBarAppearance
como YES
no arquivo .plist.
No viewDidLoad
fazer um[self setNeedsStatusBarAppearanceUpdate];
Adicione o seguinte método:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Nota : Isso não funciona para controladores internos UINavigationController
, consulte o comentário da Tyson abaixo :)
Swift 3 - Isso funcionará nos controladores internos UINavigationController
. Adicione esse 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 o SwiftUI, crie um novo arquivo rápido chamado HostingController.swift
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Altere as seguintes linhas de código no diretório SceneDelegate.swift
window.rootViewController = UIHostingController(rootView: ContentView())
para
window.rootViewController = HostingController(rootView: ContentView())
Como alternativa, você pode desativar a aparência da barra de status baseada no controlador de exibição:
View controller-based status bar appearance
como NO
no seu Info.plist
.[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Nota: Este método foi preterido no iOS9. Use preferredStatusBarStyle
no UIViewController. (consulte Apple Developer Library )
Você pode fazer isso sem escrever nenhuma linha de código!
Faça o seguinte para fazer com que o texto da barra de status fique branco em todo o aplicativo
No projeto do arquivo plist :
Transparent black style (alpha of 0.5)
NO
NO
UIStatusBarStyleLightContent
no plist info
No entanto, há Transparent Black
que fazer o mesmo truque :) plus, você precisa adicionar View controller-based status bar appearance
uma vez que não está lá originalmente e é tudo o que você precisa para obtê-lo para o trabalho :)
<key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
Nota: A resposta mais votada não funciona no iOS 7/8
No Info.plist, defina 'Exibir aparência da barra de status baseada em controlador' como NÃO
No AppDelegate, adicione
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
para
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
......
...
}
Esta solução funciona para iOS 7/8
Para mim, nada aconteceu com o uso de todas as coisas nas outras respostas (e de outras fontes / 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.
Nada disso funcionou para mim, então aqui está uma solução funcional ...
Em Info.plist
, adicione uma linha:
UIViewControllerBasedStatusBarAppearance
e defina o valor NO
.
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 aparência da barra de status baseada no controlador" em info.plist da seguinte maneira:
e defina seu tipo de valor como Booleano e valor como NÃO. Em seguida, clique nas configurações do projeto, clique na guia Geral e, em Informações de implantação, defina o estilo preferido da barra de status como .Light da seguinte maneira:
É isso aí.
Apenas duas etapas da seguinte maneira:
Passo 1:
Na guia Informações do project target
, Adicionar linha:
UIViewControllerBasedStatusBarAppearance
, defina o 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 no Xcode 5 GM seed e no iOS7 SDK lançado em 18 de setembro de 2013 (pelo menos com o controlador de navegação oculto):
Defina the UIViewControllerBasedStatusBarAppearance
como NO
no
Info.plist
.
No ViewDidLoad
método ou em qualquer lugar, onde você deseja alterar o estilo da barra de status:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Caso seu UIViewController esteja dentro de um UINavigationController, você precisará definir o BarStyle:
-[UINavigationBar setBarStyle:UIBarStyleBlack]
A resposta original está aqui
Se você tiver um controlador de navegação incorporado criado por meio do Interface Builder , defina o seguinte em uma classe que gerencia seu controlador de navegação:
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
Isso deve ser tudo o 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:
No AppDelegate.m, adicione o seguinte.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
E no arquivo Plist, defina 'Exibir aparência da barra de status baseada em controlador' como NÃO.
Simply In Appdelegate
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Bem, isso está realmente funcionando como um pedaço de bolo para mim.
Vá para o seu aplicativo info.plist
.
View controller-based status bar appearance
comoNO
Status bar style
comoUIStatusBarStyleLightContent
Em seguida, vá para o representante do seu aplicativo e cole o código a seguir, onde você define o RootViewController do 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.
View controller-based status bar appearance equal
para NO
era a peça que estava faltando. Obrigado
No Swift 3 é muito fácil, apenas com 2 etapas. Vá para o seu info.plist e altere a chave View controller-based status bar appearance
para "NÃO". Em seguida, no Appdelegate, basta adicionar esta linha no método de concluir o lançamento com opções
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
isso foi preterido no iOS9 agora você deve substituir essa propriedade no rootviewcontroller
fazer isso foi preterido no iOS 9 deve fazer isso no rootviewcontroller
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
O iOS 7 permite que os controladores de exibição individuais determinem a aparência da barra de status, conforme descrito na documentação do desenvolvedor da Apple:
O iOS 7 oferece aos controladores de exibiçã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
preferredStatusBarStyle
e - dentro de um bloco de animação - atualizar a aparência e a chamada da barra de statussetNeedsStatusBarAppearanceUpdate
.
Definir a aparência da barra de status globalmente é um processo de duas etapas.
Primeiro, você precisa informar ao iOS que não deseja definir a aparência da barra de status, vista a exibição.
Então você precisa assumir o controle e definir o novo estilo da barra de status global.
Para desativar o controle da barra de status de exibição por exibição, você precisará definir a View controller-based status bar appearance
propriedade emInfo.plist
.
Abra o Navegador de projeto, selecione o projeto para o seu aplicativo iOS e 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
.
Digite View controller-based status bar appearance
no campo Chave e verifique se o campo Tipo está definido como Boolean
. Por fim, insiraNO
o campo Valor.
Para definir um estilo global para a barra de status, adicione outra propriedade na guia Informações com uma chave de Status bar style
, um Tipo de String
e um Valor de Opaque black style
.
Aqui está uma postagem no 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/
Não é necessário fazer mais, basta escrever esse código no seu viewController e obter a barra de status em branco
- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
Resposta atualizada para Xcode GM Seed:
Em Info.plist
colocar View controller-based status bar appearance
comoNO
No projeto, defina:
Em ViewDidLoad:
[[UIApplication sharedApplication] setStatusBarStyle: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ê precisar 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 tela de inicialização ou em outros lugares, onde não poderá controlá-la (não nos controladores de exibição, mas em alguns elementos / momentos controlados pelo sistema como Tela de Lançamento) Você acessa as 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
b) Em seguida, defina o estilo da barra de navegação como "Preto", pois isso significa que você terá um fundo "preto" -> escuro sob a barra de status, para que a barra de status seja branca
Ou faça isso no código da seguinte maneira
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:
Simplesmente chamando
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
no
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}
método dos meus AppDelegate
trabalhos ótimos para mim no iOS7.
View controller-based status bar appearance = NO
Isso está documentado no Guia de transição da interface do usuário do iOS 7 , que você precisa de um ID de desenvolvedor da Apple para acessar diretamente. O trecho relevante:
Como a barra de status é transparente, a exibição por trás dela é exibida. [...] Use uma
UIStatusBarStyle
constante para especificar se o conteúdo da barra de status deve estar 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 vew individual e alterá-lo enquanto o aplicativo é executado. Para optar por esse comportamento, adicione a
UIViewControllerBasedStatusBarAppearance
chave aoInfo.plist
arquivo de um aplicativo e atribua o valor a eleYES
.
Definitivamente, recomendo dar uma olhada no documento, que você pode acessar novamente com o seu ID de desenvolvedor da Apple.
Aqui estão as diretrizes / instruções da Apple sobre alterações na barra de status. Apenas Escuro e claro (enquanto e preto) são permitidos na barra de status.
Aqui está - Como alterar o estilo da barra de status:
Se você quiser estilo barra de status set, nível de aplicação, em seguida, definir UIViewControllerBasedStatusBarAppearance
a NO
em seu arquivo `.plist'.
se você deseja definir o estilo da barra de status, no nível do controlador de exibição, siga estas etapas:
UIViewControllerBasedStatusBarAppearance
como YES
no .plist
arquivo, se você precisar definir o estilo da barra de status apenas no nível UIViewController.Na função de adição viewDidLoad - setNeedsStatusBarAppearanceUpdate
substitua o preferidoStatusBarStyle no seu controlador de exibiçã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.
Aqui está um truque hacky para alterar / definir a cor de fundo da barra de status durante o lançamento do aplicativo ou durante o viewDidLoad do seu controlador de exibiçã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:
Eu fiz algumas coisas diferentes e funciona para mim.
Sem alterações no código, configurei meu arquivo .plist assim:
Espero que ajude.
Para cada controlador de exibição, altero a propriedade Métricas simuladas da "barra de status", no storyboard, de "inferido" para "Conteúdo claro"
Se você ainda deseja usar View controller-based status bar appearance
no info.plist definido como YES, o que significa que você pode alterar a barra de status para cada controlador de exibição, use o seguinte para texto em branco na barra de status em ViewDidLoad:
[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
em info.plist, defina o valor do campo NÃO Veja a aparência da barra de status baseada no controlador e defina a luz de estilo da barra de status em target> general setting.
Deixe-me dar uma resposta completa à 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ê estiver tentando alterar a cor de preto para branco no Storyboard, selecionando o controlador de exibição e indo para Métricas simuladas no lado direito, ele não funcionará e não sei por que. Deve funcionar mudando assim, mas de qualquer maneira.
Em segundo lugar, você não encontrará a propriedade UIViewControllerBasedStatusBarAppearance no seu plist, mas, por padrão, não está lá. Você deve adicioná-lo clicando no botão + e depois configurá-lo para NÃO.
cor do texto da barra de status do ios 7
Por fim, você precisa acessar o 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 exibição. Espero que isto ajude!