color ios swift uinavigation

Swift-iOS: cambia el color de una barra de navegación



navigationitem title color (8)

Estoy tratando de cambiar el color de mi barra de navegación, pero descubrí que solo es imposible si el navegador es la raíz.

Estoy intentando esto:

self.navigationController?.navigationBar.translucent = true self.navigationController!.navigationBar.barTintColor = UIColor.blueColor()

Todos mis Viewcontrollers están relacionados con los controladores del navegador. Sin embargo nada se cambia. De hecho, intenté hacer lo mismo desde el guión gráfico, pero solo funciona si estoy en el primer navegador.

Intenté leer todo lo relacionado con este problema pero no encontré nada.

Podría agregar cualquier elemento a la barra de navegación como este

let HomeImage = UIImage(named: "home")! let Home : UIBarButtonItem = UIBarButtonItem(image: HomeImage, style: .Plain, target: self, action: "home:") navigationItem.rightBarButtonItem = Home


De hecho, encontré que la solución era usar en el AppDelegate.siwft :

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. UINavigationBar.appearance().barTintColor = UIColor(red: 0, green: 0/255, blue: 205/255, alpha: 1) UINavigationBar.appearance().tintColor = UIColor.whiteColor() UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()] return true }

y luego en cada controlador de vista, que necesitamos otro color de fondo o algo más

  1. el segue debe ser diferente de "show"

  2. usar la vista de función va a viewWillAppear

    override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) self.navigationController?.navigationBar.barTintColor = UIColor.whiteColor() self.navigationController?.navigationBar.tintColor = UIColor.blueColor() self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.blueColor()] }


Para cambiar el color del tema de la barra de navegación a través de la aplicación completa, puede hacerlo usando la apariencia de la barra UiNavigation.

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


Realice la siguiente actualización en el archivo AppDelegate.Swift, es decir, UINavigationBar.appearance().barTintColor = UIColor(red:x.xx, green:x.xx, blue:x.xx, alpha:1.0)

Consulte el siguiente ejemplo

import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. UINavigationBar.appearance().barTintColor = UIColor(red:0.03, green:0.25, blue:0.11, alpha:1.0) UINavigationBar.appearance().tintColor = UIColor.white UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white] return true } func applicationWillResignActive(_ application: UIApplication) { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. } func applicationDidEnterBackground(_ application: UIApplication) { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } func applicationWillEnterForeground(_ application: UIApplication) { // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. } func applicationDidBecomeActive(_ application: UIApplication) { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } func applicationWillTerminate(_ application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } }


Si su controlador de vista está integrado en el controlador de navegación, puede eliminar esta barra de navegación predeterminada y puede usar una barra de navegación personalizada para ese controlador de vista.

Entonces puedes hacer que parezca

UINavigationBar.appearance().barTintColor = UIColor(red: 46.0/255.0, green: 14.0/255.0, blue: 74.0/255.0, alpha: 1.0)


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


Swift 4.x :

//To change Navigation Bar Background Color UINavigationBar.appearance().barTintColor = UIColor.blue //To change Back button title & icon color UINavigationBar.appearance().tintColor = UIColor.white //To change Navigation Bar Title Color UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]

Swift 3.x :

//To change Navigation Bar Background Color UINavigationBar.appearance().barTintColor = UIColor.blue //To change Back button title & icon color UINavigationBar.appearance().tintColor = UIColor.white //To change Navigation Bar Title Color UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]


self.navigationController.navigationBar.barTintColor = [UIColor blackColor];


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