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:
-
viewDidLoad
elviewDidLoad
del receptor viewDidAppear
elviewDidAppear
del receptorself.navigationItem.backBarButtonItem.tintColor = [UIColor whiteColor];
Cuando vi que no funcionaba, intenté configurar el leftBarButtonItem en su lugar:
self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];
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.
Creo que estás buscando una propiedad de tu UINavigationBar. Intente configurar self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
Consulte la sección "Aspecto de las barras de navegación": https://developer.apple.com/library/ios/documentation/userexperience/conceptual/UIKitUICatalog/UINavigationBar.html#//apple_ref/doc/uid/TP40012857-UINavigationBar-SW1
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()