Parece que a cor do título da barra de navegação do iOS é branca por padrão. Existe uma maneira de mudar para uma cor diferente?
Estou ciente da navigationItem.titleView
abordagem usando uma imagem. Como minhas habilidades de design são limitadas e não obtive o brilho padrão, prefiro alterar a cor do texto.
Qualquer insight seria muito apreciado.
ios
uinavigationbar
navigationitem
Callum
fonte
fonte
Respostas:
Abordagem moderna
A maneira moderna, para todo o controlador de navegação ... faça isso uma vez, quando a visualização raiz do seu controlador de navegação estiver carregada.
No entanto, isso não parece ter efeito nas visualizações subsequentes.
Abordagem clássica
Da maneira antiga, por controlador de visualização (essas constantes são para iOS 6, mas se você quiser fazê-lo por controlador de visualização na aparência do iOS 7, você desejará a mesma abordagem, mas com constantes diferentes):
Você precisa usar um
UILabel
como otitleView
donavigationItem
.O rótulo deve:
label.backgroundColor = [UIColor clearColor]
).label.font = [UIFont boldSystemFontOfSize: 20.0f]
).label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).label.textAlignment = NSTextAlignmentCenter
(UITextAlignmentCenter
para SDKs mais antigos).Defina a cor do texto do rótulo como a cor personalizada desejada. Você deseja uma cor que não faça com que o texto se misture à sombra, o que seria difícil de ler.
Eu resolvi isso por tentativa e erro, mas os valores que eu criei são simples demais para que eles não sejam o que a Apple escolheu. :)
Se você quiser verificar isso, soltar esse código em
initWithNibName:bundle:
noPageThreeViewController.m
de amostra NavBar da Apple . Isso substituirá o texto por um rótulo amarelo. Isso deve ser indistinguível do original produzido pelo código da Apple, exceto pela cor.Editar: Leia também a resposta de Erik B abaixo. Meu código mostra o efeito, mas o código dele oferece uma maneira mais simples de colocar isso em um controlador de exibição existente.
fonte
sizeWithFont:
, ele assumirá magicamente o comportamento de alinhamento automático da etiqueta padrão.Sei que esse é um tópico bastante antigo, mas acho que seria útil saber para novos usuários que o iOS 5 traz uma nova propriedade para estabelecer propriedades de título.
Você pode usar UINavigationBar
setTitleTextAttributes
para definir a fonte, a cor, o deslocamento e a cor da sombra.Além disso, você pode definir os mesmos atributos de texto do título padrão do UINavigationBar para
UINavigationBars
todo o aplicativo.Por exemplo, assim:
fonte
No iOS 5, você pode alterar a cor do título navigationBar da seguinte maneira:
fonte
UITextAttributeTextColor
paraNSForegroundColorAttributeName
. Funciona como um encanto!self.navigationController.navigationBar.tintColor
não funcionou para mim. Isso fez.Com base na resposta de Steven Fisher, escrevi este código:
A vantagem desse código, além de lidar com o quadro corretamente, é que, se você alterar o título do seu controlador, a exibição do título personalizado também será atualizada. Não há necessidade de atualizá-lo manualmente.
Outra grande vantagem é que torna muito simples ativar a cor do título personalizado. Tudo que você precisa fazer é adicionar esse método ao controlador.
fonte
A maioria das sugestões acima está obsoleta agora, para o iOS 7 -
Além disso, verifique o NSAttributedString.h para obter várias propriedades de texto que podem ser definidas.
fonte
No IOS 7 e 8, você pode alterar a cor do título para digamos verde
fonte
self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Para manter a pergunta atualizada, adicionarei a solução Alex RR , mas no Swift :
Que resulta em:
fonte
Método 1 , defina-o no IB:
Método 2 , uma linha de código:
fonte
titleTextAttributes
apenasA solução da tewha funciona bem se você estiver tentando alterar a cor de uma página, mas quero poder alterar a cor de todas as páginas. Fiz algumas pequenas modificações para que funcionasse em todas as páginas em um
UINavigationController
NavigationDelegate.h
NavigationDelegate.m
fonte
A partir do iOS 5, precisamos definir a cor do texto do título e a fonte da barra de navegação usando o titleTextAttribute Dictionary (dicionário predefinido na referência de classe do controlador UInavigation).
fonte
Versão rápida
Descobri que a maioria de vocês apresentou as respostas da versão do Objective_C
Eu gostaria de implementar essa função usando o Swift para quem precisar.
No ViewDidload
1.Para tornar o fundo da Barra de Navegação se tornar colorido (por exemplo: AZUL)
2.Para tornar o plano de fundo NavigationBar se tornar Image (por exemplo: ABC.png)
3.Para alterar o título da NavigationBar (por exemplo: [Fonte: Futura, 10] [Cor: Vermelho])
Espero poder ajudar!: D
fonte
Use o código abaixo em qualquer método viewDidLoad ou viewWillAppear do controlador de exibição.
fonte
Curto e grosso.
fonte
Esta é a minha solução baseada em Stevens
A única diferença real é que eu coloco um pouco de manipulação para ajustar a posição se, dependendo do comprimento do texto, parecer semelhante à forma como a maçã faz isso
Convém ajustar o valor 10 dependendo do tamanho da fonte
fonte
Encontrei o problema com meus botões de navegação jogando o texto fora do centro (quando você tem apenas um botão). Para corrigir isso, mudei meu tamanho de quadro da seguinte maneira:
fonte
Eu personalizei a imagem de plano de fundo da barra de navegação e o item do botão esquerdo, e o título cinza não se encaixa no plano de fundo. Então eu uso:
para mudar a cor da tonalidade para cinza. E o título é branco agora! Isso é o que eu quero.
Espero ajudar também :)
fonte
É recomendável definir self.title, pois isso é usado enquanto pressiona as barras de navegação filho ou mostra o título nas barras de tabulação.
fonte
Este é um tópico bastante antigo, mas penso em fornecer respostas para a configuração de Cor, Tamanho e Posição vertical do título da barra de navegação para iOS 7 e superior
Para cor e tamanho
Para posição vertical
Definir título e atribuir o dicionário de atributos
fonte
Isso funciona para mim no Swift:
fonte
navigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Versão Swift 4 e 4.2:
fonte
fonte
para definir o tamanho da fonte do título, usei as seguintes condições ... talvez seja útil para qualquer pessoa
fonte
Uma atualização da postagem de Alex RR usando os novos atributos de texto do iOS 7 e o objetivo moderno c para obter menos ruído:
fonte
Eu acredito que a maneira correta de definir a cor
UINavigationBar
é:O código acima está escrito com a subclasse ativada
UINavigationBar
, obviamente funciona sem subclassificação também.fonte
[UINavigationBar appearance]
e definir atributos de texto do título (considerando os truques envolvidos na subclassificaçãoUINavigationBar
, uma solução preferível).Use assim para suporte à orientação
fonte
Esta é uma daquelas coisas que estão faltando. Sua melhor aposta é criar sua própria barra de navegação personalizada, adicionar uma caixa de texto e manipular a cor dessa maneira.
fonte
Depois de encontrar o mesmo problema (como outros) da etiqueta que se move quando inserimos um botão na navBar (no meu caso, tenho um botão giratório que substituo por um botão quando a data é carregada), as soluções acima não funcionaram para mim, aqui está o que funcionou e manteve o rótulo no mesmo lugar o tempo todo:
fonte
Você deve chamar [label sizeToFit]; depois de definir o texto para evitar deslocamentos estranhos quando o rótulo é reposicionado automaticamente na exibição do título quando outros botões ocupam a barra de navegação.
fonte
Pode usar esse método no arquivo appdelegate e pode usar em todas as visualizações
fonte
titleTextAttributes Exibe atributos para o texto do título da barra.
@property (nonatomic, copy) NSDictionary * titleTextAttributes Discussão Você pode especificar a fonte, a cor do texto, a cor da sombra do texto e o deslocamento da sombra do texto no título no dicionário de atributos de texto, usando as chaves de atributo de texto descritas na Referência de Adições do NSString UIKit.
Disponibilidade Disponível no iOS 5.0 e posterior. Declarado em UINavigationBar.h
fonte