Color de texto del título de la barra de navegación del iPhone

283

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.titleViewenfoque 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.

Callum
fuente
Acabo de publicar un código, basado en la respuesta de Steven Fisher, que simplifica el proceso de agregar títulos de colores personalizados a su barra de navegación. También admite cambiar el título. ¡Búscalo! No te decepcionará.
Erik B
1
Erik: He puesto una nota sobre tu respuesta en la mía. Simplemente actualizaría mi respuesta con su código, pero no me gustaría recibir sus votos. Solución inteligente, por cierto.
Steven Fisher
Para IOS 13 stackoverflow.com/a/61141195/6108739
Vladyslav Panchenko

Respuestas:

423

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.

[self.navigationController.navigationBar setTitleTextAttributes:
   @{NSForegroundColorAttributeName:[UIColor yellowColor]}];

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 UILabelcomo el titleViewde navigationItem.

La etiqueta debe:

  • Tener un color de fondo claro ( label.backgroundColor = [UIColor clearColor]).
  • Utilice la fuente del sistema negrita de 20 puntos ( label.font = [UIFont boldSystemFontOfSize: 20.0f]).
  • Tener una sombra de negro con 50% alfa ( label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]).
  • También querrá establecer la alineación del texto en centrado ( label.textAlignment = NSTextAlignmentCenter( UITextAlignmentCenterpara 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:en PageThreeViewController.mde 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.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
        // this will appear as the title in the navigation bar
        UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
        label.backgroundColor = [UIColor clearColor];
        label.font = [UIFont boldSystemFontOfSize:20.0];
        label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
        label.textAlignment = NSTextAlignmentCenter;
                           // ^-Use UITextAlignmentCenter for older SDKs.
        label.textColor = [UIColor yellowColor]; // change this color
        self.navigationItem.titleView = label;
        label.text = NSLocalizedString(@"PageThreeTitle", @"");
        [label sizeToFit];
    }

    return self;
}

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.

Steven Fisher
fuente
2
Si configura el marco de la etiqueta al tamaño de su texto usando sizeWithFont:, mágicamente tomará el comportamiento de alineación automática de la etiqueta estándar.
grahamparks
1
Pero si usa sizeToFit, perderá el truncamiento automático.
Steven Fisher
3
NOTA: esta es la forma antigua de establecer un título personalizado, sugiero leer la respuesta de Erik B.
Elia Palme
1
Confirmó que sizeToFit funciona, así que la respuesta actualizada. Además, se agregó una nota para leer la respuesta de Erik B.
Steven Fisher
1
label.textAlignment = UITextAlignmentCenter se ha depurado desde iOS6.0, use NSTextAlignmentCenter en su lugar
Jasper
226

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 setTitleTextAttributespara 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í:

NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                            [UIColor whiteColor],UITextAttributeTextColor, 
                                            [UIColor blackColor], UITextAttributeTextShadowColor, 
                                            [NSValue valueWithUIOffset:UIOffsetMake(-1, 0)], UITextAttributeTextShadowOffset, nil];

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];
Alex RR
fuente
11
'UITextAttributeTextColor' está en desuso en iOS 7. La clave de iOS 7 es 'NSForegroundColorAttributeName'
Keller
1
Tenga en cuenta que esto cambiará TODAS las barras de navegación, que generalmente es lo que desearía de todos modos.
Ash
1
Marque esto como la respuesta correcta: el método UILabel anterior no es necesario con estos métodos disponibles.
Mic Fok
180

En iOS 5 puede cambiar el color del título de la barra de navegación de esta manera:

navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor yellowColor]};
minux
fuente
8
@BartSimpson Estoy de acuerdo! Para iOS 7, actualice UITextAttributeTextColora NSForegroundColorAttributeName. ¡Funciona de maravilla!
John Erck
¡ESTO FUNCIONA! lo que quiero entender es cómo? titleTextAttributes exceptúa un diccionario con un conjunto predefinido de claves mencionado en 'Claves para diccionarios de atributos de texto' mencionado en 'Referencia de adiciones de NSString UIKit'. ¿Cómo toma la clave que mencionaste?
AceN
... y dado que funciona, ¿cómo obtengo el tinte 'predeterminado'?
AceN
El ajuste self.navigationController.navigationBar.tintColorno funcionó para mí. Esto hizo
JRam13
127

Basado en la respuesta de Steven Fisher, escribí este código:

- (void)setTitle:(NSString *)title
{
    [super setTitle:title];
    UILabel *titleView = (UILabel *)self.navigationItem.titleView;
    if (!titleView) {
        titleView = [[UILabel alloc] initWithFrame:CGRectZero];
        titleView.backgroundColor = [UIColor clearColor];
        titleView.font = [UIFont boldSystemFontOfSize:20.0];
        titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];

        titleView.textColor = [UIColor yellowColor]; // Change to desired color

        self.navigationItem.titleView = titleView;
        [titleView release];
    }
    titleView.text = title;
    [titleView sizeToFit];
}

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.

Erik B
fuente
3
Estoy de acuerdo en que esta es definitivamente la mejor solución. No es necesario usar sizeWithFont, y me gusta la idea de anular el método setTitle.
Elia Palme
@ Sr.Richie No debe poner el código en un controlador de navegación personalizado. Debe ponerlo en todos los controladores de vista donde necesita cambiar el color del título. Probablemente ni siquiera quieras un controlador de navegación personalizado.
Erik B
No funciona para mi Creo que es porque utilicé el método [Apariencia UINavigationBar] ... (no funciona porque la etiqueta titleView siempre es nula)
Matej
1
Si estás en iOS5 o posterior, deberías leer la respuesta de menos a continuación. Hay una línea que funciona bien y permanece en la reserva.
algal
necesitamos agregar self.title = @ "nuestra cadena"; en viewDidLoad.then solo funciona el código anterior.
Hari1251
40

La mayoría de las sugerencias anteriores están en desuso ahora, para el uso de iOS 7:

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
                               [UIColor whiteColor],NSForegroundColorAttributeName, 
                               [UIColor whiteColor],NSBackgroundColorAttributeName,nil];

self.navigationController.navigationBar.titleTextAttributes = textAttributes;
self.title = @"Title of the Page";

Además, revise NSAttributedString.h para ver varias propiedades de texto que se pueden establecer.

girish_vr
fuente
38

En IOS 7 y 8, puede cambiar el color del título para decir verde

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor greenColor] forKey:NSForegroundColorAttributeName];
Pramesh
fuente
66
Swift:self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
Byron Coetsee
@ByronCoetsee después de la actualización a Swift 2 Tengo el siguiente error: ¿No puedo asignar un valor de tipo '[NSObject: AnyObject]' a un valor de tipo '[String: AnyObject]?'
Jorge Casariego
2
Mucho más fácil en swift 2.0self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Kevin DiTraglia
24

Para mantener la pregunta actualizada, agregaré la solución Alex RR , pero en Swift :

self.navigationController.navigationBar.barTintColor = .blueColor()
self.navigationController.navigationBar.tintColor = .whiteColor()
self.navigationController.navigationBar.titleTextAttributes = [
    NSForegroundColorAttributeName : UIColor.whiteColor()
]

Que resulta para:

ingrese la descripción de la imagen aquí

Michal
fuente
Hmmm, tal vez no funcione para Swift 2.0. Déjame verificar dos veces. Sin embargo, no hay necesidad de agresión.
Michal
Lo siento, Michal, ¡estaba pensando eso como una broma! ¡No como algo agresivo! Lo que funcionó para mí fue más como esto: self.navigationController! .NavigationBar.titleTextAttributes = NSDictionary (objeto: UIColor.whiteColor (), forKey: NSForegroundColorAttributeName) como [NSObject: AnyObject]
Radu
Agregue esta línea siguiente: UINavigationBar.appearance (). BarStyle = UIBarStyle.Black Antes de esta línea: UINavigationBar.appearance (). TintColor = UIColor.whiteColor () ¡Para que tintColor funcione!
triiiiista
2
En Swift 4.0: self.navigationController? .NavigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
Abhi Muktheeswarar
14

Método 1 , configúrelo en IB:

ingrese la descripción de la imagen aquí

Método 2 , una línea de código:

navigationController?.navigationBar.barTintColor = UIColor.blackColor()
Fujianjin6471
fuente
El método 2 no funciona. Funciona titleTextAttributessolo con
Vyachaslav Gerchicov
13

La 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 unUINavigationController

NavigationDelegate.h

//This will change the color of the navigation bar
#import <Foundation/Foundation.h>
@interface NavigationDelegate : NSObject<UINavigationControllerDelegate> {
}
@end

NavigationDelegate.m

#import "NavigationDelegate.h"
@implementation NavigationDelegate

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
    CGRect frame = CGRectMake(0, 0, 200, 44);//TODO: Can we get the size of the text?
    UILabel* label = [[[UILabel alloc] initWithFrame:frame] autorelease];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    //The two lines below are the only ones that have changed
    label.text=viewController.title;
    viewController.navigationItem.titleView = label;
}
@end
Casebash
fuente
13

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).

 [[UINavigationBar appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor blackColor],UITextAttributeTextColor, 
[UIFont fontWithName:@"ArialMT" size:16.0], UITextAttributeFont,nil]];
Sandeep
fuente
13

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)

self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()

2.Para hacer que el fondo de NavigationBar se convierta en Imagen (por ejemplo: ABC.png)

let barMetrix = UIBarMetrics(rawValue: 0)!

self.navigationController?.navigationBar
      .setBackgroundImage(UIImage(named: "ABC"), forBarMetrics: barMetrix)

3.Para cambiar el título de NavigationBar (por ejemplo: [Fuente: Futura, 10] [Color: Rojo])

navigationController?.navigationBar.titleTextAttributes = [
            NSForegroundColorAttributeName : UIColor.redColor(),
            NSFontAttributeName : UIFont(name: "Futura", size: 10)!
        ]

(sugerencia1: no olvide la marca "!" después de UIFont)

(sugerencia2: hay muchos atributos del texto del título, haga clic en el comando "NSFontAttributeName"; puede ingresar la clase y ver los KeyNames y los tipos de Objetos que requieren)

¡Espero poder ayudar!: D

Microos
fuente
10

Use el siguiente código en cualquier método de vista de controlador viewDidLoad o viewWillAppear.

- (void)viewDidLoad
{
    [super viewDidLoad];

    //I am using UIColor yellowColor for an example but you can use whatever color you like   
    self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor yellowColor]};

    //change the title here to whatever you like
    self.title = @"Home";
    // Do any additional setup after loading the view.
}
Gaurav Gilani
fuente
9

Corto y dulce.

[[[self navigationController] navigationBar] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor redColor]}];
Pier-Luc Gendreau
fuente
8

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

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft), 0, 480,44)];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.font = [UIFont boldSystemFontOfSize: 20.0f];
titleLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
titleLabel.textAlignment = ([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft);
titleLabel.textColor = [UIColor redColor];
titleLabel.text = self.title;
self.navigationItem.titleView = titleLabel;
[titleLabel release];

Es posible que desee ajustar el valor 10 según el tamaño de su fuente

Anthony Main
fuente
6

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:

CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);
coryjacobsen
fuente
6

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:

[self.navigationBar setTintColor:[UIColor darkGrayColor]];

para cambiar el color del tinte a gris. ¡Y el título es blanco ahora! Eso es lo que quiero.

Espero ayudar también :)

Brillante
fuente
Agradable, pero eso solo funciona para cambiar el texto a blanco. Incluso teñir la barra de navegación con [UIColor whiteColor] cambia el color del texto a blanco.
cschuff
6

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.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // create and customize title view
        self.title = NSLocalizedString(@"My Custom Title", @"");
        UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
        titleLabel.text = self.title;
        titleLabel.font = [UIFont boldSystemFontOfSize:16];
        titleLabel.backgroundColor = [UIColor clearColor];
        titleLabel.textColor = [UIColor whiteColor];
        [titleLabel sizeToFit];
        self.navigationItem.titleView = titleLabel;
        [titleLabel release];
    }
}
Ramesh
fuente
6

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

 NSDictionary *titleAttributes =@{
                                NSFontAttributeName :[UIFont fontWithName:@"Helvetica-Bold" size:14.0],
                                NSForegroundColorAttributeName : [UIColor whiteColor]
                                };

Para posición vertical

[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-10.0 forBarMetrics:UIBarMetricsDefault];

Establecer título y asignar el diccionario de atributos

[[self navigationItem] setTitle:@"CLUBHOUSE"];
self.navigationController.navigationBar.titleTextAttributes = titleAttributes;
Abdullah Saeed
fuente
5

Esto funciona para mí en Swift:

navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white]
zumzum
fuente
Bastante cerca, pero la cuestión es que tu camino sobrescribirá todos los atributos posibles que ya están en el título. En mi caso esa fue la fuente. El código con el que terminé fuenavigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
Matic Oblak el
Funciona bien. Lo mismo para Obj-C:self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Mike Keskinov
5

Versión Swift 4 y 4.2:

 self.navigationController.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.green]
Patricio Bravo
fuente
4
self.navigationItem.title=@"Extras";
[self.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue" size:21], NSFontAttributeName,[UIColor whiteColor],UITextAttributeTextColor,nil]];
Paresh Hirpara
fuente
3

para establecer el tamaño de fuente del título, he utilizado las siguientes condiciones ... tal vez sea útil para cualquiera

if ([currentTitle length]>24) msize = 10.0f;
    else if ([currentTitle length]>16) msize = 14.0f;
    else if ([currentTitle length]>12) msize = 18.0f;
Shefali Soni
fuente
3

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:

NSShadow *titleShadow = [[NSShadow alloc] init];
titleShadow.shadowColor = [UIColor blackColor];
titleShadow.shadowOffset = CGSizeMake(-1, 0);
NSDictionary *navbarTitleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor],
                                            NSShadowAttributeName:titleShadow};

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];
phatblat
fuente
3

Creo que la forma correcta de establecer el color UINavigationBares:

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],UITextAttributeTextColor, nil];
self.titleTextAttributes = attributes;

El código anterior está escrito en una subclase UINavigationBar, obviamente también funciona sin subclase.

stringCode
fuente
Correcto, pero solo iOS 5. Ha pasado suficiente tiempo desde el lanzamiento de iOS 5 que es una buena solución. Y dado que estamos en el mundo de iOS 5, vale la pena señalar que uno puede usar [UINavigationBar appearance]y establecer atributos de texto de título allí (considerando el truco involucrado en la subclasificación UINavigationBar, una solución preferible).
Ivan Vučica
@stringCode. ¿Se puede inicializar el código anterior sin "self.navigationController.navigationBar.titleTextAttributes = atributos;"?
Gajendra K Chauhan
3

Úselo así para el soporte de orientación

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
[view setBackgroundColor:[UIColor clearColor]];
[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ];

UILabel *nameLabel = [[UILabel alloc] init];
[nameLabel setFrame:CGRectMake(0, 0, 320, 40)];
[nameLabel setBackgroundColor:[UIColor clearColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin |UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];
[nameLabel setTextColor:[UIColor whiteColor]];
[nameLabel setFont:[UIFont boldSystemFontOfSize:17]];
[nameLabel setText:titleString];
[nameLabel setTextAlignment:UITextAlignmentCenter];
[view addSubview:nameLabel];
[nameLabel release];
self.navigationItem.titleView = view;
[view release];
Nikesh K
fuente
2

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.

David McGraw
fuente
Estoy siguiendo tu idea :) ¿qué método debería anular para comenzar a jugar con el título? Lo siento, realmente soy un n00b :(
Sr.Richie
2

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:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
    // this will appear as the title in the navigation bar
    //CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);
   CGRect frame = CGRectMake(0, 0, 180, 44);
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];



    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    self.navigationItem.titleView = label;
    label.text = NSLocalizedString(@"Latest Questions", @"");
    [label sizeToFit];
}

return self;
Juan
fuente
1

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.

Jorge
fuente
1

Puede usar este método en el archivo appdelegate y puede usarlo en cada vista

+(UILabel *) navigationTitleLable:(NSString *)title
{
CGRect frame = CGRectMake(0, 0, 165, 44);
UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = NAVIGATION_TITLE_LABLE_SIZE;
label.shadowColor = [UIColor whiteColor];
label.numberOfLines = 2;
label.lineBreakMode = UILineBreakModeTailTruncation;    
label.textAlignment = UITextAlignmentCenter;
[label setShadowOffset:CGSizeMake(0,1)]; 
label.textColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];

//label.text = NSLocalizedString(title, @"");

return label;
}
sinh99
fuente
1

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

inmersión
fuente