color bar ios swift uinavigationbar

ios - bar - uinavigationitem title color



Cambiar el color de la barra de navegaciĆ³n en Swift (21)

Swift 3

UINavigationBar.appearance().barTintColor = UIColor(colorLiteralRed: 51/255, green: 90/255, blue: 149/255, alpha: 1)

Esto configurará el color de la barra de navegación como el color de la barra de Facebook :)

Estoy utilizando una vista de selector para permitir al usuario elegir el tema de color para toda la aplicación. Estoy planeando cambiar el color de la barra de navegación, el fondo y posiblemente la barra de pestañas (si es posible). He estado investigando cómo hacer esto pero no puedo encontrar ningún ejemplo de Swift. ¿Podría alguien darme un ejemplo del código que necesitaría usar para cambiar el color de la barra de navegación y el color del texto de la barra de navegación? (La vista del selector está configurada, solo estoy buscando el código para cambiar los colores de la interfaz de usuario)

Gracias.


Aquí hay algunas personalizaciones de aspecto muy básicas que puede aplicar a toda la aplicación:

UINavigationBar.appearance().backgroundColor = UIColor.greenColor() UIBarButtonItem.appearance().tintColor = UIColor.magentaColor() //Since iOS 7.0 UITextAttributeTextColor was replaced by NSForegroundColorAttributeName UINavigationBar.appearance().titleTextAttributes = [UITextAttributeTextColor: UIColor.blueColor()] UITabBar.appearance().backgroundColor = UIColor.yellowColor();

UIAppearance más información UIAppearance API UIAppearance en Swift aquí: https://developer.apple.com/documentation/uikit/uiappearance


Barra de navegación:

navigationController?.navigationBar.barTintColor = UIColor.green

Reemplace greenColor con cualquier UIColor que desee, también puede usar un RGB si lo prefiere.

Texto de la barra de navegación:

navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]

Reemplace orangeColor con el color que desee.

Barra de pestañas:

tabBarController?.tabBar.barTintColor = UIColor.brown

Texto de la barra de pestañas

tabBarController?.tabBar.tintColor = UIColor.yellow

En los dos últimos, reemplace brownColor y yellowColor con el color de su elección.


Dentro de AppDelegate , esto ha cambiado globalmente el formato de NavBar y elimina la línea inferior / borde (que es un área problemática para la mayoría de las personas) para darle lo que creo que usted y otros están buscando:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarPosition: UIBarPosition.Any, barMetrics: UIBarMetrics.Default) UINavigationBar.appearance().shadowImage = UIImage() UINavigationBar.appearance().tintColor = UIColor.whiteColor() UINavigationBar.appearance().barTintColor = Style.SELECTED_COLOR UINavigationBar.appearance().translucent = false UINavigationBar.appearance().clipsToBounds = false UINavigationBar.appearance().backgroundColor = Style.SELECTED_COLOR UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : (UIFont(name: "FONT NAME", size: 18))!, NSForegroundColorAttributeName: UIColor.whiteColor()] }

Luego puede configurar un archivo Constants.swift , y contiene una estructura de estilo con colores y fuentes, etc. Luego, puede agregar tableView / pickerView a cualquier ViewController y usar la matriz "availableThemes" para permitir al usuario cambiar themeColor.

Lo mejor de esto es que puedes usar una referencia en toda tu aplicación para cada color y se actualizará en función del "Tema" seleccionado del usuario y sin una, el tema por defecto es theme1 ():

import Foundation import UIKit struct Style { static let availableThemes = ["Theme 1","Theme 2","Theme 3"] static func loadTheme(){ let defaults = NSUserDefaults.standardUserDefaults() if let name = defaults.stringForKey("Theme"){ // Select the Theme if name == availableThemes[0] { theme1() } if name == availableThemes[1] { theme2() } if name == availableThemes[2] { theme3() } }else{ defaults.setObject(availableThemes[0], forKey: "Theme") theme1() } } // Colors specific to theme - can include multiple colours here for each one static func theme1(){ static var SELECTED_COLOR = UIColor(red:70/255, green: 38/255, blue: 92/255, alpha: 1) } static func theme2(){ static var SELECTED_COLOR = UIColor(red:255/255, green: 255/255, blue: 255/255, alpha: 1) } static func theme3(){ static var SELECTED_COLOR = UIColor(red:90/255, green: 50/255, blue: 120/255, alpha: 1) } ...


En Swift 4

Puedes cambiar el color de la barra de navegación. Solo use este fragmento de código a continuación en viewDidLoad()

Color de barra de navegación

self.navigationController?.navigationBar.barTintColor = UIColor.white

Color del texto de la barra de navegación

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.purple]

Para la barra de navegación de título grande de iOS 11 , debe usar la propiedad largeTitleTextAttributes

self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.purple]


En Swift 2

Para cambiar el color en la barra de navegación,

navigationController?.navigationBar.barTintColor = UIColor.whiteColor()

Para cambiar el color en la barra de navegación del elemento,

navigationController?.navigationBar.tintColor = UIColor.blueColor()

o

navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.blueColor()]


La función de apariencia () no siempre funciona para mí. Por lo tanto, prefiero crear un objeto NC y cambiar sus atributos.

var navBarColor = navigationController!.navigationBar navBarColor.barTintColor = UIColor(red: 255/255.0, green: 0/255.0, blue: 0/255.0, alpha: 100.0/100.0) navBarColor.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]

Además, si desea agregar una imagen en lugar de solo texto, eso también funciona

var imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 70, height: 70)) imageView.contentMode = .ScaleAspectFit var image = UIImage(named: "logo") imageView.image = image navigationItem.titleView = imageView


Primero establezca la propiedad isTranslucent de navigationBar en false para obtener el color deseado. A continuación, cambie el color de la barra de navegación de esta manera:

@IBOutlet var NavigationBar: UINavigationBar! NavigationBar.isTranslucent = false NavigationBar.barTintColor = UIColor (red: 117/255, green: 23/255, blue: 49/255, alpha: 1.0)


Si se está moviendo desde un controlador de navegación y tiene que establecer un color diferente en el controlador de navegación que presionó desde que desea usar

override func willMove(toParentViewController parent: UIViewController?) { navigationController?.navigationBar.barTintColor = .white navigationController?.navigationBar.tintColor = Constants.AppColor }

en lugar de ponerlo en la vista, aparecerá para que la transición sea más clara.


Si tiene un controlador de navegación personalizado, puede usar el fragmento de código anterior. Entonces, en mi caso, he usado los siguientes fragmentos de código.

Swift 3.0, versión de XCode 8.1

navigationController.navigationBar.barTintColor = UIColor.green

Texto de la barra de navegación:

navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]

Son conversaciones muy útiles.


Tenía que hacer

UINavigationBar.appearance().tintColor = UIColor.whiteColor() UINavigationBar.appearance().barStyle = .Black UINavigationBar.appearance().backgroundColor = UIColor.blueColor()

de lo contrario, el color de fondo no cambiaría


Use la apariencia API y el color barTintColor.

UINavigationBar.appearance().barTintColor = UIColor.greenColor()


Actualizado para Swift 3

// setup navBar..... UINavigationBar.appearance().barTintColor = .black UINavigationBar.appearance().tintColor = .white UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white] UINavigationBar.appearance().isTranslucent = false

Swift 4

UINavigationBar.appearance().barTintColor = .black UINavigationBar.appearance().tintColor = .white UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white] UINavigationBar.appearance().isTranslucent = false


Para hacer esto en el guión gráfico (Interface Builder Inspector)

Con la ayuda de IBDesignable , podemos agregar más opciones al Inspector de Interface Builder para UINavigationController y modificarlas en el guión gráfico. Primero, agregue el siguiente código a su proyecto.

@IBDesignable extension UINavigationController { @IBInspectable var barTintColor: UIColor? { set { guard let uiColor = newValue else { return } navigationBar.barTintColor = uiColor } get { guard let color = navigationBar.barTintColor else { return nil } return color } } }

Luego, simplemente configure los atributos para el controlador de navegación en el guión gráfico.


Swift 3 y Swift 4 Compatible Xcode 9

Una mejor solución para hacer una clase para barras de navegación comunes

Tengo 5 controladores y cada título de controlador se cambia a color naranja. Como cada controlador tiene 5 controles de navegación, tuve que cambiar cada color desde el inspector o desde el código.

Así que hice una clase en lugar de cambiar todas las barras de navegación del código, solo asigno esta clase y funcionó en las 5 habilidades de reutilización de códigos del controlador. Solo tienes que asignar esta clase a Cada controlador y eso es todo.

import UIKit class NabigationBar: UINavigationBar { required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) commonFeatures() } func commonFeatures() { self.backgroundColor = UIColor.white; UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor:ColorConstants.orangeTextColor] } }


Swift 3

Un simple trazador de líneas que puedes usar en ViewDidLoad()

//Change Color self.navigationController?.navigationBar.barTintColor = UIColor.red //Change Text Color self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]


Swift 4 actualización

Solo ponga una línea dentro de viewDidLoad()

navigationController?.navigationBar.barTintColor = UIColor.red


iOS 10 Swift 3.0

Si no le importa usar marcos rápidos, entonces UINeraida para cambiar el fondo de navegación como UIColor o HexColor o UIImage y cambiar el texto del botón de retroceso de navegación mediante programación, cambie el color del texto forground completo.

Para UINavigationBar

neraida.navigation.background.color.hexColor("54ad00", isTranslucent: false, viewController: self) //Change navigation title, backbutton colour neraida.navigation.foreground.color.uiColor(UIColor.white, viewController: self) //Change navigation back button title programmatically neraida.navigation.foreground.backButtonTitle("Custom Title", ViewController: self) //Apply Background Image to the UINavigationBar neraida.navigation.background.image("background", edge: (0,0,0,0), barMetrics: .default, isTranslucent: false, viewController: self)


iOS 8 (veloz)

let font: UIFont = UIFont(name: "fontName", size: 17) let color = UIColor.backColor() self.navigationController?.navigationBar.topItem?.backBarButtonItem?.setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName: color], forState: .Normal)


UINavigationBar.appearance().barTintColor = UIColor(red: 46.0/255.0, green: 14.0/255.0, blue: 74.0/255.0, alpha: 1.0) UINavigationBar.appearance().tintColor = UIColor.whiteColor() UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()]

Simplemente pegue esta línea en didFinishLaunchingWithOptions en su código.


UINavigationBar.appearance().barTintColor

trabajó para mi