Parece que el color del título de la barra de navegación de iOS es blanco por defecto. ¿Hay alguna manera de cambiarlo a un color diferente?
Soy consciente del navigationItem.titleView
enfoque usando una imagen. Como mis habilidades de diseño son limitadas y no pude obtener el brillo estándar, prefiero cambiar el color del texto.
Cualquier idea sería muy apreciada.
ios
uinavigationbar
navigationitem
Callum
fuente
fuente
Respuestas:
Enfoque moderno
La forma moderna, para todo el controlador de navegación ... haga esto una vez, cuando se carga la vista raíz de su controlador de navegación.
Sin embargo, esto no parece tener un efecto en vistas posteriores.
Enfoque clásico
A la antigua usanza, por controlador de vista (estas constantes son para iOS 6, pero si quieres hacerlo por controlador de vista en apariencia iOS 7 querrás el mismo enfoque pero con constantes diferentes):
Necesita usar un
UILabel
como eltitleView
denavigationItem
.La etiqueta debe:
label.backgroundColor = [UIColor clearColor]
).label.font = [UIFont boldSystemFontOfSize: 20.0f]
).label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).label.textAlignment = NSTextAlignmentCenter
(UITextAlignmentCenter
para SDK anteriores).Configure el color del texto de la etiqueta para que sea el color personalizado que desee. Desea un color que no haga que el texto se mezcle en sombras, lo que sería difícil de leer.
Lo resolví mediante prueba y error, pero los valores que obtuve son, en última instancia, demasiado simples para que no sean lo que Apple eligió. :)
Si desea verificar esto, la caída de este código en
initWithNibName:bundle:
enPageThreeViewController.m
de Apple muestra de barra de navegación . Esto reemplazará el texto con una etiqueta amarilla. Esto debe ser indistinguible del original producido por el código de Apple, a excepción del color.Editar: Además, lea la respuesta de Erik B a continuación. Mi código muestra el efecto, pero su código ofrece una forma más sencilla de colocarlo en un controlador de vista existente.
fuente
sizeWithFont:
, mágicamente tomará el comportamiento de alineación automática de la etiqueta estándar.Sé que este es un hilo bastante antiguo, pero creo que sería útil saber para los nuevos usuarios que iOS 5 trae una nueva propiedad para establecer las propiedades del título.
Puede usar UINavigationBar's
setTitleTextAttributes
para configurar la fuente, el color, el desplazamiento y el color de la sombra.Además, puede establecer los mismos atributos de texto de título de UINavigationBar predeterminados para todos los
UINavigationBars
aplicación.Por ejemplo así:
fuente
En iOS 5 puede cambiar el color del título de la barra de navegación de esta manera:
fuente
UITextAttributeTextColor
aNSForegroundColorAttributeName
. ¡Funciona de maravilla!self.navigationController.navigationBar.tintColor
no funcionó para mí. Esto hizoBasado en la respuesta de Steven Fisher, escribí este código:
La ventaja de este código, además de tratar el marco correctamente, es que si cambia el título de su controlador, la vista de título personalizada también se actualizará. No es necesario actualizarlo manualmente.
Otra gran ventaja es que hace que sea realmente sencillo habilitar el color del título personalizado. Todo lo que necesita hacer es agregar este método al controlador.
fuente
La mayoría de las sugerencias anteriores están en desuso ahora, para el uso de iOS 7:
Además, revise NSAttributedString.h para ver varias propiedades de texto que se pueden establecer.
fuente
En IOS 7 y 8, puede cambiar el color del título para decir verde
fuente
self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Para mantener la pregunta actualizada, agregaré la solución Alex RR , pero en Swift :
Que resulta para:
fuente
Método 1 , configúrelo en IB:
Método 2 , una línea de código:
fuente
titleTextAttributes
solo conLa solución de tewha funciona bien si está tratando de cambiar el color de una página, pero quiero poder cambiar el color en cada página. Hice algunas pequeñas modificaciones para que funcione para todas las páginas de un
UINavigationController
NavigationDelegate.h
NavigationDelegate.m
fuente
A partir de iOS 5 en adelante, debemos establecer el color del texto del título y la fuente de la barra de navegación utilizando titleTextAttribute Dictionary (diccionario predefinido en la referencia de clase del controlador UInavigation).
fuente
Versión rápida
Encontré que la mayoría de ustedes presentaron las respuestas de la versión Objective_C
Me gustaría implementar esta función usando Swift para cualquier persona que lo necesite.
En ViewDidload
1. Para hacer que el fondo de la barra de navegación se convierta en color (por ejemplo: AZUL)
2.Para hacer que el fondo de NavigationBar se convierta en Imagen (por ejemplo: ABC.png)
3.Para cambiar el título de NavigationBar (por ejemplo: [Fuente: Futura, 10] [Color: Rojo])
¡Espero poder ayudar!: D
fuente
Use el siguiente código en cualquier método de vista de controlador viewDidLoad o viewWillAppear.
fuente
Corto y dulce.
fuente
Esta es mi solución basada en Stevens
La única diferencia real es que pongo algo de manejo para ajustar la posición si, dependiendo de la longitud del texto, parece ser similar a cómo lo hace Apple
Es posible que desee ajustar el valor 10 según el tamaño de su fuente
fuente
Me encontré con el problema con mis botones de navegación arrojando el texto fuera del centro (cuando solo tienes un botón). Para solucionarlo, acabo de cambiar el tamaño de mi marco de esta manera:
fuente
He personalizado la imagen de fondo de la barra de navegación y el elemento del botón izquierdo, y el título gris no se ajusta al fondo. Entonces uso:
para cambiar el color del tinte a gris. ¡Y el título es blanco ahora! Eso es lo que quiero.
Espero ayudar también :)
fuente
Se recomienda configurar self.title, ya que se usa al presionar las barras de navegación secundarias o mostrar el título en las pestañas.
fuente
Este es un hilo bastante antiguo, pero pienso proporcionar una respuesta para configurar el Color, el Tamaño y la Posición Vertical del Título de la Barra de Navegación para iOS 7 y superior
Para color y tamaño
Para posición vertical
Establecer título y asignar el diccionario de atributos
fuente
Esto funciona para mí en Swift:
fuente
navigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Versión Swift 4 y 4.2:
fuente
fuente
para establecer el tamaño de fuente del título, he utilizado las siguientes condiciones ... tal vez sea útil para cualquiera
fuente
Una actualización de la publicación de Alex RR usando los nuevos atributos de texto de iOS 7 y el objetivo moderno c para menos ruido:
fuente
Creo que la forma correcta de establecer el color
UINavigationBar
es:El código anterior está escrito en una subclase
UINavigationBar
, obviamente también funciona sin subclase.fuente
[UINavigationBar appearance]
y establecer atributos de texto de título allí (considerando el truco involucrado en la subclasificaciónUINavigationBar
, una solución preferible).Úselo así para el soporte de orientación
fuente
Esta es una de esas cosas que faltan. Su mejor opción es crear su propia barra de navegación personalizada, agregar un cuadro de texto y manipular el color de esa manera.
fuente
Después de encontrar el mismo problema (como otros) de la etiqueta que se mueve cuando insertamos un botón en la barra de navegación (en mi caso, tengo una ruleta que reemplazo con un botón cuando se carga la fecha), las soluciones anteriores no funcionaron para mí, así que esto es lo que funcionó y mantuvo la etiqueta en el mismo lugar todo el tiempo:
fuente
Debe llamar a [label sizeToFit]; después de configurar el texto para evitar desplazamientos extraños cuando la etiqueta se reposiciona automáticamente en la vista de título cuando otros botones ocupan la barra de navegación.
fuente
Puede usar este método en el archivo appdelegate y puede usarlo en cada vista
fuente
titleTextAttributes Muestra los atributos para el texto del título de la barra.
@property (no atómico, copia) NSDictionary * titleTextAttributes Discusión Puede especificar la fuente, el color del texto, el color de la sombra del texto y el desplazamiento de la sombra del texto para el título en el diccionario de atributos de texto, utilizando las teclas de atributos de texto descritas en la Referencia de adiciones de NSString UIKit.
Disponibilidad Disponible en iOS 5.0 y posterior. Declarado en UINavigationBar.h
fuente