Enfoque moderno
La forma moderna, para todo el controlador de navegación ... hazlo una vez, cuando se cargue la vista raíz de tu 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
La vieja forma, controlador de vista (estas constantes son para iOS 6, pero si quieres hacerlo por controlador de vista en iOS 7, querrás el mismo enfoque pero con constantes diferentes):
Necesitas usar a UILabelcomo the titleViewof the navigationItem.
La etiqueta debe:
- Tener un color de fondo claro (
label.backgroundColor = [UIColor clearColor]).
- Use la fuente del sistema en negrita de 20 pt (
label.font = [UIFont boldSystemFontOfSize: 20.0f]).
- Tiene una sombra de negro con un 50% de alfa (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]).
- También querrá establecer la alineación de texto centrada (
label.textAlignment = NSTextAlignmentCenter( UITextAlignmentCenterpara SDK anteriores).
Establezca el color del texto de la etiqueta para que sea el color personalizado que desee. Usted quiere un color que no haga que el texto se mezcle con la sombra, 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 escogió. :)
Si desea verificar esto, la caída de este código en initWithNibName:bundle:en PageThreeViewController.mde muestra de barra de navegación de Apple . Esto reemplazará el texto con una etiqueta amarilla. Esto debería 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: También, 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 colocar esto en su lugar en un controlador de vista existente.