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 UILabel
como el titleView
de 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
( 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:
en PageThreeViewController.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.
- (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.