Estou usando uma exibição de selecionador para permitir que o usuário escolha o tema de cores para todo o aplicativo.
Estou planejando alterar a cor da barra de navegação, do plano de fundo e possivelmente da barra de guias (se isso for possível).
Estive pesquisando como fazer isso, mas não consigo encontrar nenhum exemplo do Swift. Alguém poderia me dar um exemplo do código que eu precisaria usar para alterar a cor da barra de navegação e a cor do texto da barra de navegação?
A exibição do seletor está configurada. Estou apenas procurando o código para alterar as cores da interface do usuário.
fonte
Aqui estão algumas personalizações de aparência muito básicas que você pode aplicar em todo o aplicativo:
Mais sobre a
UIAppearance
API no Swift, você pode ler aqui: https://developer.apple.com/documentation/uikit/uiappearancefonte
Atualizado para Swift 3, 4, 4.2, 5+
Swift 4
Swift 4.2, 5+
Também pode verificar aqui: https://github.com/hasnine/iOSUtilitiesSource
fonte
Basta colar esta linha
didFinishLaunchingWithOptions
no seu código.fonte
No AppDelegate , isso mudou globalmente o formato da NavBar e remove a linha inferior / borda (que é uma área problemática para a maioria das pessoas) para fornecer o que acho que você e outras pessoas estão procurando:
Em seguida, você pode configurar um Constants.swift arquivo , e contém uma estrutura de estilo com cores e fontes, etc. Você pode adicionar um tableView / pickerView a qualquer ViewController e usar a matriz "availableThemes" para permitir que o usuário altere themeColor.
O mais legal é que você pode usar uma referência em todo o aplicativo para cada cor e ela será atualizada com base no "Tema" selecionado pelo usuário e, sem uma, o padrão será theme1 ():
fonte
Para fazer isso no storyboard (Interface Builder Inspector)
Com a ajuda de
IBDesignable
, podemos adicionar mais opções ao Interface Builder InspectorUINavigationController
e ajustá-las no storyboard. Primeiro, adicione o seguinte código ao seu projeto.Em seguida, basta definir os atributos para o controlador de navegação no storyboard.
Essa abordagem também pode ser usada para gerenciar a cor do texto da barra de navegação do storyboard:
fonte
Swift 4:
Código que funciona perfeitamente para alterar a aparência da barra de navegação no nível do aplicativo.
Feliz codificação!
fonte
trabalhou para mim
fonte
SWIFT 4 - Transição suave (melhor solução):
Se você estiver voltando de um controlador de navegação e precisar definir uma cor diferente no controlador de navegação que você pressionou, deseja usar
em vez de colocá-lo no viewWillAppear, para que a transição seja mais limpa.
SWIFT 4.2
fonte
Em Swift 4
Você pode alterar a cor da barra de navegação. Basta usar este trecho de código abaixo em
viewDidLoad()
Cor da barra de navegação
Cor do texto da barra de navegação
Para a barra de navegação de título grande do iOS 11 , você precisa usar a
largeTitleTextAttributes
propriedadefonte
A
appearance()
função nem sempre funciona para mim. Por isso, prefiro criar um objeto NC e alterar seus atributos.Além disso, se você deseja adicionar uma imagem em vez de apenas texto, isso também funciona
fonte
Use a API de aparência e a cor barTintColor.
fonte
iOS 8 (rápido)
fonte
Se você personalizou o controlador de navegação, pode usar o snippet de código acima. Então, no meu caso, usei como seguintes partes de código.
Swift 3.0, versão XCode 8.1
Texto da barra de navegação:
São palestras muito úteis.
fonte
Atualização Swift 4, iOS 12 e Xcode 10
Basta colocar uma linha dentro
viewDidLoad()
fonte
Em Swift 2
Para alterar a cor na barra de navegação,
Para alterar a cor na barra de navegação do item,
ou
fonte
Swift 3
Isso definirá a cor da barra de navegação como a cor da barra do Facebook :)
fonte
Swift 3 e Swift 4 Compatível com Xcode 9
Uma solução melhor para criar uma classe para barras de navegação comuns
Eu tenho 5 controladores e cada título do controlador é alterado para cor laranja. Como cada controlador possui 5 controladores de navegação, tive que alterar cada cor, do inspetor ou do código.
Então, eu criei uma classe em vez de alterar cada barra de navegação do código, apenas atribui essa classe e funcionou em todas as 5 habilidades de reutilização de código do controlador. Você só precisa atribuir essa classe a Cada controlador e é isso.
fonte
iOS 10 Swift 3.0
Se você não se importa em usar estruturas rápidas, use o UINeraida para alterar o plano de fundo da navegação como
UIColor
ouHexColor
ouUIImage
alterar o texto do botão voltar da navegação programaticamente, altere a cor completa do texto forground.Para
UINavigationBar
fonte
Swift 3
Um liner simples que você pode usar
ViewDidLoad()
fonte
Esta versão também remove a linha de sombra 1px sob a barra de navegação:
Swift 5: coloque isso no seu aplicativoDelegate didFinishLaunchingWithOptions
fonte
eu tive que fazer
caso contrário, a cor do fundo não mudaria
fonte
Primeiro, defina a propriedade isTranslucent de navigationBar como false para obter a cor desejada. Em seguida, altere a cor navigationBar da seguinte maneira:
fonte
Certifique-se de definir o estado do botão para. Normal
PS iOS 12, Xcode 10.1
fonte
topItem
solução. É frustrante o número de mudanças que a Apple continua fazendo na maneira como os estilos são aplicados à navegação.basta ligar para esta extensão e passar a cor, ela mudará automaticamente a cor da barra de navegação
na exibição didload ou no viewwill aparecerá chamada
self.navigationController? .setNavigationBarColor (color: <# T ## UIColor #>)
fonte
fonte
Estou escrevendo isso para aqueles que ainda têm problemas com as soluções aqui.
Estou usando o Xcode versão 11.4 (11E146). O que trabalha para mim é:
MAS !, se você definir o barTintColor no storyboard para qualquer outro valor que não seja "padrão", essas duas linhas de código não terão efeito.
Portanto, tenha cuidado e volte ao padrão barTintColor no Storyboard. Oh maçã ...
fonte
Adicione essas linhas ao seu AppDelegate dentro da função didFinishLaunchingWithOptions:
esta linha é para o fundo da barra de navegação.
esta linha é, se você não forTranslucent to false, ele mostrará a cor branca na navegação.
esta linha é para seus textos e ícones na barra de navegação
essa linha nos leva a tudo para a sua barra de navegação.
fonte