ios - para - cambiar color barra de navegacion huawei
Cambiar el color del botón Atrás en la barra de navegación (24)
Swift 4.2
Cambiar el tema completo de la aplicación
self.navigationController?.navigationBar.tintColor = UIColor.red
Cambiar controlador específico
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UINavigationBar.appearance().tintColor = .white
return true
}
Estoy tratando de cambiar el color del botón Configuración a blanco, pero no puedo cambiarlo.
He intentado ambos:
navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
navigationItem.backBarButtonItem?.tintColor = UIColor.whiteColor()
pero sin cambios, todavía se ve así:
¿Cómo hago que ese botón sea blanco?
Agregue el siguiente código a la función didFinishLaunchingWithOptions en AppDelegate.swift
var navigationBarAppearace = UINavigationBar.appearance()
navigationBarAppearace.tintColor = uicolorFromHex(0xffffff) // White color
navigationBarAppearace.barTintColor = uicolorFromHex(0x034517) // Green shade
// change navigation item title color
navigationBarAppearace.titleTextAttributes =[NSForegroundColorAttributeName:UIColor.whiteColor()]
Deberías agregar esta línea
self.navigationController?.navigationBar.topItem?.backBarButtonItem?.tintColor = .black
Deberías usar esto:
navigationController?.navigationBar.barTintColor = .purple
navigationController?.navigationBar.tintColor = .white
En
Swift3
, para establecer el botón Atrás en
red
.
let navController = UINavigationController.init(rootViewController: yourViewController)
navController.navigationBar.tintColor = .red
present(navController, animated: true, completion: nil)
En Swift 4, puede solucionar este problema utilizando:
let navStyles = UINavigationBar.appearance()
// This will set the color of the text for the back buttons.
navStyles.tintColor = .white
// This will set the background color for navBar
navStyles.barTintColor = .black
Este código cambia el color de la flecha.
self.navigationController.navigationBar.tintColor = UIColor.whiteColor();
Si esto no funciona, use el siguiente código:
self.navigationBar.barStyle = UIBarStyle.Black
self.navigationBar.tintColor = UIColor.whiteColor()
Swift 3 Notas
UIColor.whiteColor()
y similares se han simplificado a
UIColor.white
Además, muchas opciones opcionales previamente implícitas se han cambiado a explícitas, por lo que puede necesitar:
self.navigationController?.navigationBar =
No estoy seguro de por qué nadie ha mencionado esto ... pero estaba haciendo exactamente lo que estaba haciendo en mi
viewDidLoad
... y no estaba funcionando.
Luego puse mi código en
viewWillAppear
y todo funcionó.
La solución anterior es cambiar un solo elemento barbuttonItem. Si desea cambiar el color de cada barra de navegación en su código, siga esta respuesta .
Básicamente, cambiar a la clase usando la
appearance()
es como hacer un cambio global en todas las instancias de esa vista en su aplicación.
Para más información ver
here
Para Swift 2.0, para cambiar el color de tinte de la barra de navegación , el texto del título y el color de tinte del botón Atrás cambiaron usando lo siguiente en AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
//Navigation bar tint color change
UINavigationBar.appearance().barTintColor = UIColor(red: 42/255.0, green: 140/255.0, blue: 166/255.0, alpha: 0.5)
//Back button tint color change
UINavigationBar.appearance().barStyle = UIBarStyle.Default
UINavigationBar.appearance().tintColor = UIColor(red: 204/255.0, green: 255/255.0, blue: 204/255.0, alpha: 1)
//Navigation Menu font tint color change
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor(red: 204/255.0, green: 255/255.0, blue: 204/255.0, alpha: 1), NSFontAttributeName: UIFont(name: "OpenSans-Bold", size: 25)!]//UIColor(red: 42/255.0, green: 140/255.0, blue: 166/255.0, alpha: 1.0)
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
return true
}
Prefiero el NavigationController personalizado en lugar de configurar la interfaz de usuario global, o ponerlo en ViewController.
Aqui esta mi solucion
class AppNavigationController : UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
override func viewWillAppear(_ animated: Bool) {
}
}
extension AppNavigationController : UINavigationControllerDelegate {
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
let backButtonItem = UIBarButtonItem(
title: " ",
style: UIBarButtonItem.Style.plain,
target: nil,
action: nil)
backButtonItem.tintColor = UIColor.gray
viewController.navigationItem.backBarButtonItem = backButtonItem
}
func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
}
}
Además, no necesita meterse con Apple Api como
EKEventEditViewController
,
PickerViewController
,
etc.
, si usa la configuración global ui como
UIBarButtonItem.appearance().tintColor = .white
Probemos este código:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
let navigationBarAppearace = UINavigationBar.appearance()
navigationBarAppearace.tintColor = UIColor.whiteColor() // Back buttons and such
navigationBarAppearace.barTintColor = UIColor.purpleColor() // Bar''s background color
navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()] // Title''s text color
self.window?.backgroundColor = UIColor.whiteColor()
return true
}
Puedes usar como este.
Colóquelo dentro de
AppDelegate.swift
.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
UINavigationBar.appearance().translucent = false
UINavigationBar.appearance().barTintColor = UIColor(rgba: "#2c8eb5")
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
return true
}
Rápido
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.tintColor = UIColor.white
}
Se resolverá con esta línea en - (vacío) viewDidLoad:
self.navigationItem.backBarButtonItem.tintColor = UIColor.whiteColor;
Si ya tiene el botón de retroceso en su controlador de vista "Configuración" y desea cambiar el color del botón de retroceso en el controlador de vista "Información de pago" a otra cosa, puede hacerlo dentro del controlador de vista "Configuración" para prepararse de esta manera. :
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "YourPaymentInformationSegue"
{
//Make the back button for "Payment Information" gray:
self.navigationItem.backBarButtonItem?.tintColor = UIColor.gray
}
}
Tiene una opción: ocultar su botón de retroceso y hacerlo con usted mismo. Luego establece su color.
Yo lo hice:
self.navigationItem.setHidesBackButton(true, animated: true)
let backbtn = UIBarButtonItem(title: "Back", style:UIBarButtonItemStyle.Plain, target: self, action: "backTapped:")
self.navigationItem.leftBarButtonItem = backbtn
self.navigationItem.leftBarButtonItem?.tintColor = UIColor.grayColor()
Todas las respuestas configuran
UINavigationBar.appearance().tintColor
conflicto con la documentación de Apple en
UIAppearance.h
.
Nota para iOS7: en iOS7, la propiedad
tintColor
ha movido aUIView
, y ahora tiene un comportamiento heredado especial descrito enUIView.h
. Este comportamiento heredado puede entrar en conflicto con el proxy de apariencia y, portintColor
tanto,tintColor
ahora no está permitido con el proxy de apariencia.
En Xcode, debe hacer clic en cada propiedad que desee usar con el proxy de apariencia para inspeccionar el archivo de encabezado y asegurarse de que la propiedad esté anotada con
UI_APPEARANCE_SELECTOR
.
Entonces, la forma correcta de colorear la barra de navegación de color púrpura y el título y los botones de color blanco en toda la aplicación a través del proxy de apariencia es:
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().barTintColor = .purple
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UIBarButtonItem.appearance().tintColor = .white
Tenga en cuenta que
UIBarButtonItem
no es una subclase de
UIView
sino más bien
NSObject
.
Por lo tanto, su propiedad
tintColor
no es el
tintColor
heredado de
UIView
.
Desafortunadamente,
UIBarButtonItem.tintColor
no está anotado con
UI_APPEARANCE_SELECTOR
, pero eso me parece un error de documentación.
La respuesta de Apple Engineering en
este radar
indica que es compatible.
Use este código en la clase
AppDelegate
, dentro de
didFinishLaunchingWithOptions
.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UINavigationBar.appearance().tintColor = .white
}
en uso rápido 2.0
self.navigationController!.navigationBar.tintColor = UIColor.whiteColor();
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
Esto funciona para mí, iOS 9.0+
self.navigationController?.navigationBar.tintColor = UIColor.redColor()
Este fragmento hace la magia. En lugar de redColor, cámbielo como desee.