ios objective-c ios7 uibarbuttonitem tintcolor

ios - Cambiar el color del tinte de UIBarButtonItem



objective-c ios7 (6)

En Swift 3.0

let navigationBarAppearnce = UINavigationBar.appearance()

El tintColor la barra de tintColor afecta el color de la imagen del indicador posterior, los títulos de los botones y las imágenes de los botones.

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

La propiedad barTintColor afecta el color de la propia barra.

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 }

Tengo un proyecto que usa Storyboards y cada vez que presiono un controlador de vista con un segue, el elemento del botón de barra creado dinámicamente siempre es azul.

Me está volviendo loco. Debido a que este objeto se crea dinámicamente, no puedo establecer su color en IB (como he hecho con los elementos del botón de la barra anterior).

Entre las soluciones que he probado están:

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

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

  3. Cuando vi que no funcionaba, intenté configurar el leftBarButtonItem en su lugar:

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

  1. He probado el siguiente código (que obtuve de otras SO respuestas) en el delegado de mi aplicación, cuando se llama a la nueva vista, y antes de empujar la nueva vista:

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

Todas las respuestas de Google que he encontrado recomiendan usar el código anterior, pero no funciona en absoluto para mí. Tal vez hay algunos cambios en la apariencia de la API de iOS 7? No importa cómo o dónde intento configurar "Categorías" en blanco, siempre es el azul predeterminado.



En iOS 7, para establecer el color de todos los artículos de barButton en su aplicación, establezca la propiedad tintColor en la ventana de la aplicación en AppDelegate.

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

Información más detallada en la Guía de transición de la interfaz de usuario de iOS 7 de Apple (específicamente en la sección "Uso de Tint Color").

***O***

En función de algunos de los comentarios, también puede lograr esto con el proxy de apariencia UINavigationBar. Esto afectará el tintColor de solo UIBarButtonItems, en lugar de establecer el tintColor en la ventana y afectará a todas las subvistas de esa ventana.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if([UINavigationBar conformsToProtocol:@protocol(UIAppearanceContainer)]) { [UINavigationBar appearance].tintColor = [UIColor whiteColor]; } return YES; }


En iOS 8, si cambió el color de tinte UIView para algún propósito, por ejemplo, para la marca UIAlertView, el color de tinte para UIBarButtonItem en UIToolBar también cambió de esa manera. Para arreglar esto, solo escribe este código

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

Para el color de tinte UIBarButtonItem en UINavigationBar, utilice el método estándar

[UINavigationBar appearance].tintColor = BLACK_COLOR;


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

myButton.tintColor = [UIColor redColor];


UITabBar.appearance().tintColor = UIColor.yellowColor()