Eu sei como mudar a UINavigationBar
imagem de fundo fazendo
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];
e eu sei como definir a barra para cores diferentes dentro de cada Views
... Agora eu quero mudar a cor de fundo sem usar uma imagem para uma cor sólida do app delegate
. Não quero defini-lo cada vez a partir de cada visualização e não quero escrever um CGRect
.
Eu tentei, [[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]];
mas não funcionou e não consigo encontrar um código que funcione no delegado do aplicativo.
Alguém poderia me indicar a direção certa?
fonte
tintColor
o gradiente vai ficar. Se você não quiser ter este gradiente, você precisa criar uma subclasse de sua UINavigationBar OU para fazer uma UIImage para a aparência.navigationBar.barTintColor = myColor;
translucent
propriedade simplesmente não pode ser definida usando UIAppearance no iOS 6 e iOS 7. Portanto[[UINavigationBar appearance] setTranslucent:NO]
, o aplicativo travará comNSInvalidArgumentException
erro. Use[self.navigationController.navigationBar setTranslucent:NO]
ou desmarque a transparência usando IB.UINavigationBar.appearance().barTintColor = myColor
UINavigationBar.appearance().isTranslucent = false
Para alterar a cor de fundo e não a tonalidade, o seguinte trecho de código funcionará:
fonte
UIViewControllers
, enquanto esta mostrará efeitos sempre que for chamada.Para fazer isso no iOS 7:
fonte
Sintaxe Swift:
Acabei de colocar isso em AppDelegate didFinishLaunchingWithOptions e persiste em todo o aplicativo
fonte
Swift :
fonte
Você pode fazer isso facilmente com o Xcode 6.3.1. Selecione sua NavigationBar no esboço do documento. Selecione o Inspetor de atributos. Desmarque Translúcido. Defina Bar Tint para a cor desejada. Feito!
fonte
Como as outras respostas mencionam, você pode usar
setTintColor:
, mas quer uma cor sólida e isso não é possível configurar a cor da tonalidade AFAIK.A solução é criar uma imagem programaticamente e definir essa imagem como imagem de fundo para todas as barras de navegação via
UIAppearance
. Sobre o tamanho da imagem, não tenho certeza se uma imagem de 1x1 pixel funcionaria ou se você precisa do tamanho exato da barra de navegação. Verifique a segunda resposta desta pergunta para ver como criar a imagem.Como conselho, não gosto de "sobrecarregar" o delegado do app com esse tipo de coisa. O que costumo fazer é criar uma classe nomeada
AppearanceConfiguration
com apenas um método públicoconfigureAppearance
onde defino todas as coisas de UIAppearance que desejo e, em seguida, chamo esse método do delegado do aplicativo.fonte
Você pode definir a cor de fundo do UINavigation usando este código em qualquer controlador de visualização
fonte
Em Swift 4.2 e Xcode 10.1
Você pode alterar a cor da barra de navegação de seu AppDelegate diretamente para todo o seu projeto.
Na
didFinishLaunchingWithOptions launchOptions:
gravação abaixo para linhas de códigoAqui
tintColor serve para definir imagens de fundo, como o botão Voltar e imagens de linhas de menu, etc. (Veja abaixo a imagem do menu esquerdo e direito)
barTintColor é para a cor de fundo da barra de navegação
Se você deseja definir a cor da barra de navegação do controlador de visualização específica, escreva o código abaixo em
viewDidLoad()
fonte
O código de cores é o problema aqui. Em vez de usar 195/255, use 0.7647 ou 195.f / 255.f O problema é que a conversão do flutuador não está funcionando corretamente. Tente usar o valor flutuante exato.
fonte