Tengo un proyecto en el uso de Storyboards y cada vez que presiono un controlador de vista con una continuación, creados dinámicamente botón de la barra de punto es siempre azul.

Cambiar el Color del Matiz de UIBarButtonItem

Me está volviendo loco. Debido a que este objeto es creado dinámicamente, no puedo especificar el color en IB (al igual que he hecho con los anteriores botón de la barra de elementos).

Entre las soluciones que he probado son:

  1. Establecido en el receptor del viewDidLoad
  2. Establecido en el receptor del viewDidAppear

    self.navigationItem.backBarButtonItem.tintColor = [UIColor whiteColor];

  3. Cuando vi que no acaba de funcionar, he probado la configuración de la leftBarButtonItem lugar:

self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];

  1. He probado el siguiente código (que yo recibí de otros de MODO que las respuestas) en mi aplicación delegado, cuando la nueva vista se llama, y antes de empujar la nueva vista:

    [[UIBarButtonItem appearance] setTintColor:[UIColor whiteColor]];

Todas las respuestas de google he encontrado recomendamos utilizar el código de arriba, pero no funciona en absoluto para mí. Tal vez hay algunos cambios en iOS 7 la apariencia de la API? No importa cómo o dónde puedo intentar establecer «Categorías» a blanco, es siempre el azul predeterminado.

InformationsquelleAutor Andy Ibanez | 2013-10-21

6 Comentarios

  1. 83

    En iOS 7, para establecer el color de todos los barButtonItems en su aplicación, establecer el tintColor de la propiedad en la ventana de la aplicación en el AppDelegate.

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window.tintColor = [UIColor whiteColor];
        return YES;
    }

    Información más detallada en Apple iOS 7 interfaz de usuario Guía de Transición (Específicamente en el marco del ‘Uso de Matiz de Color de la sección`).

    ***O***

    Basado en algunos de los comentarios, también puedes lograrlo con el UINavigationBar apariencia de proxy. Esto afectará a la tintColor de sólo UIBarButtonItems, en contraposición a la configuración de la tintColor en la ventana y que afectan a todas las subvistas de la ventana.

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        if([UINavigationBar conformsToProtocol:@protocol(UIAppearanceContainer)]) {
            [UINavigationBar appearance].tintColor = [UIColor whiteColor];
        }
    
        return YES;
    }
    • Esto se ha solucionado el problema..para mí.gracias
    • Cualquier otro color que el blanco no funciona como se esperaba
    • Definir «no funciona como se esperaba». Cualquier color que me puse self.window.tintColor que se convierte en el color de mi barButtonItems. Como era de esperar.
    • Puedo cambiar el rootViewController de la ventana basada en logout y login. Cuando me puse yo.de la ventana.tintColor cualquier otro color que no sea whiteColor, funciona, sólo para la primera vez. Entonces, cuando yo cambie la ventana.rootViewController a otra cosa, el color se oscurece (no discapacitados), y en este caso no se produce cuando whiteColor se establece como el tintColor
    • Sólo puedo suponer que algo peculiar que está sucediendo en algún lugar de su rootViewController lógica que está afectando a la tintColor. Me gustaría ver en la documentación de Apple sobre cómo la tintColor funciona la herencia bajo la cubierta.
    • Déjame probar este caso en un proyecto independiente..
    • He arreglado este problema…Una ventana emergente estaba presente aún cuando he cambiado el rootViewController de la ventana…Ahora, antes de configuración de la ventana.rootViewController a un nuevo controlador de vista , yo descartar el popovercontroller
    • Esto también hace que el cursor de texto en blanco, por lo que no siempre la solución más adecuada.
    • Sí, si se establece la ventana del tintColor blanco, cualquier UITextField tintColor será también del conjunto blanco (el cursor). Sin embargo, si simplemente reemplazar el tintColor en el UITextField va a resolver el problema. theTextField.tintColor = [UIColor blueColor]; //sets cursor to blue
    • no funciona para mí.
    • En lugar de establecer el tono en toda la ventana, también puedes ponerlo en la barra de navegación elementos mediante [UINavigationBar appearance].tintColor = [UIColor colorWithWhite:0.7 alpha:1.0];
    • Pero, ¿cómo tener dos colores diferentes para dos UIBarButtons en la barra de navegación al mismo tiempo? Luchando durante todo el día sin ninguna suerte…
    • usted salvó mi día!
    • INCREÍBLE RESPUESTA!

  2. 22

    Creo que usted está buscando una propiedad de su UINavigationBar. Pruebe a establecer self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

    Ver «el Aspecto de las Barras de Navegación» de la sección: https://developer.apple.com/library/ios/documentation/userexperience/conceptual/UIKitUICatalog/UINavigationBar.html#//apple_ref/doc/uid/TP40012857-UINavigationBar-SW1

    • self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; no establece el color de la UIBarButtonItems
    • No, no establece – mira en el enlace de arriba, «la Apariencia de las Barras de Navegación» de la sección. En realidad, es la única forma correcta de aplicación. Para cambiar el matiz de la barra en sí debe utilizar barTintColor.
    • Esto no está funcionando para mí. Trató de cada combinación
    • Argh… de alguna manera me encontré con la situación en la que UINavigationController.navigationBar.tintColor = ... no tomar ningún efecto… Mi trabajo en este caso fue UIViewController *currentViewController = self.childViewControllers.lastObject; [currentViewController.navigationItem.leftBarButtonItems enumerateObjectsUsingBlock:^(UIBarButtonItem * _Nonnull barButtonItem, NSUInteger idx, BOOL * _Nonnull stop) { barButtonItem.tintColor = YOUR_COLOR; }]; // REPEAT SAME THINGS FOR RIGHT BAR BUTTON ITEMS AND BACK BUTTON ITEM Definitivamente no es lo ideal, pero puede ayudar
  3. 10

    En Swift 3.0

    let navigationBarAppearnce = UINavigationBar.appearance()

    Una barra de navegación del tintColor afecta el color de la parte posterior del indicador de imagen, botón de títulos, y las imágenes de los botones.

    navigationBarAppearnce.barTintColor = UIColor(red: 0.180, green: 0.459, blue: 0.733, alpha: 1.00)

    El barTintColor propiedad afecta el color de la barra en sí

    navigationBarAppearnce.tintColor = UIColor.white

    Código Final

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
     let navigationBarAppearnce = UINavigationBar.appearance()
    
     navigationBarAppearnce.barTintColor = UIColor(red: 0.180, green: 0.459, blue: 0.733, alpha: 1.00)
    
     navigationBarAppearnce.tintColor = UIColor.white
    
     navigationBarAppearnce.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
    
     //Change status bar color
     UIApplication.shared.statusBarStyle = .lightContent
    
     return true
    }

    Cambiar el Color del Matiz de UIBarButtonItem

  4. 2

    En iOS 8 si ha cambiado UIView matiz de color con algún propósito, por ejemplo para la marca UIAlertView, tinte de color para UIBarButtonItem en UIToolBar también cambiado de esa manera. Para solucionar esto, sólo tiene que escribir este código

    [UIView appearance].tintColor = SOME_COLOR;
    [UIView appearanceWhenContainedIn:[UIToolbar class], nil].tintColor = BLACK_COLOR;

    Para UIBarButtonItem matiz de color en UINavigationBar utilizar el método estándar

    [UINavigationBar appearance].tintColor = BLACK_COLOR;
    • Esta respuesta pone de relieve un punto muy importante. UIView.appearance() anula UINavigationBar.appearance()
    • [UIView apariencia].tintColor Resuelto mi problema +1 para mi lado
  5. 1

    Para cambiar el color de un elemento específico (por ejemplo, un botón) en su barra de navegación:
    En Objective-C

    myButton.tintColor = [UIColor redColor];
  6. 0
    UITabBar.appearance().tintColor = UIColor.yellowColor()
    • mal barra de hombre. Este es uno preguntando acerca de la navbar. La solución es CASI correcto, sin embargo.

Dejar respuesta

Please enter your comment!
Please enter your name here