Personalizando NavigationBar

Muitas pessoas costumam ter problemas para personalizar suas instâncias de <b><i>UINavigationBar</i> </b>, então eu gostaria de empurrar minha própria experiência aqui, esperando que possa ajudar alguém em algum lugar. 🙂

É assim que parece.

Cenário

Como você pode ver na imagem acima, existem 2 tipos de cores – para as subvisualizações da barra e para a barra. Primeiro, o que você pode querer mudar é a cor de “fundo” da sua barra. De qualquer forma, na verdade não é chamada de cor de “fundo”, mas de cor de matiz, então vamos chamar as coisas de seus nomes. No entanto, é muito simples personalizar e definir sua própria cor.

Antes de começarmos a mudar qualquer coisa, devemos entender de onde as coisas vêm para sermos capazes de acessar instâncias apropriadas de trabalho com dados que gostaríamos de alterar.

Cenário

Na API Cocoa Touch, cada instância <b><i>UIView</i> </b>, como <b><i>UINavigationView</i> </b> ou <b> <i> UITabBarView </i> </b> tem seu objeto responsável por sua aparência. Esta é uma propriedade que você pode acessar sem nenhum objeto instanciado. Isso foi feito para obter um melhor processo de customização, uma vez que qualquer alteração feita com instâncias desses tipos é aplicada para todo o aplicativo. Portanto, todas as alterações serão feitas dentro de sua classe <b><i>AppDelegate</i> </b>.

Então vamos. Abra a classe <b><i>AppDelegate</i> </b> e adicione o seguinte código em
application(_:didFinishLaunchingWithOptions:)</code> method:

/** Get an access of Bar's Appearance instance */
var navigationBarAppearace = UINavigationBar.appearance()

/** Change the color for all subviews */
navigationBarAppearace
.tintColor = colorFromHex(hexCode: 0xffffff)

/** Change the color for the Bar */
navigationBarAppearace
.barTintColor = colorFromHex(hexCode: 0xFF5E3A)

Não discutimos o processo de obtenção de uma cor com seu código hexadecimal. É seguido pelo modelo RGB – você tem um valor hexadecimal de uma cor, por exemplo0xFFFFFF</code>. Now we should divide the given value into 3 pieces for red, green and blue value appropriately: 0xFF</code>, 0xFF</code> and 0xFF</code>. That's a simple math we might do with the solid value. Let's go ahead to the code:

func colorFromHex(#hexCode: Int) -> UIColor {
/** line 1 */
let red = ((hexCode & 0xFF0000) >> 16)
let green = ((hexCode & 0xFF00) >> 8)
let blue = ((hexCode & 0xFF))

let rd: CGFloat = CGFloat(red) / 255.0
let gr: CGFloat = CGFloat(green) / 255.0
let bl: CGFloat = CGFloat(blue) / 255.0

return UIColor(red: rd, green: gr, blue: bl, alpha: 1.0)
}

Resumindo, obtemos partes do valor obtendo seu byte mais baixo e aplicando um deslocamento específico. Se tivermos um valor de 0xFFFFFF</code>, then red</code> constant has a value of 0xFF</code> (first two "Fs"). And so forth...

Para resumir, percorremos um longo caminho de bom entendimento das coisas com as quais trabalhamos personalizando nossa NavigationBar . Eu gostaria de esperar que você tenha achado este artigo útil. Obrigado por estar comigo e até a próxima! 🙂