Pregunta

En necesita una imagen de fondo y un título en mi barra de navegación. Para la imagen que escribo una categoría:

@implementation UINavigationBar(MyNavigationBar)
- (void)setBackgroundImage {
    UIImageView *aTabBarBackground = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"navBarBackgrd.png"]];
    [self addSubview: aTabBarBackground];
    [self sendSubviewToBack: aTabBarBackground];
    [aTabBarBackground release];
}
@end

Me llamar a esta categoría en mi AppDelegate y tienen imágenes de fondo en toda la aplicación:

[navigationController.navigationBar setBackgroundImage]; 

Cada ViewController tiene un título:

[self setTitle:@"MyTitle"];

Sin embargo, después de ajustar la imagen de fondo, tengo un problema con el título.

En la primera vista de cada obra, veo la imagen de fondo y el título :-) Pero en la siguiente vista, el título desaparece. Sólo la imagen de fondo es visible. Tal vez el título está en la imagen?

Técnicamente es posible mostrar ambos. Con este truco funciona:

  1. Ocultar barra de navegación de abrir antes de la próxima ViewController:

    [self.navigationController setNavigationBarHidden: YES];

  2. Mostrar la barra de navegación en la siguiente ViewController:

    [self.navigationController setNavigationBarHidden: NO];

Ahora, la imagen y el título son visibles, pero esta solución no es la mejor; -)

¿Fue útil?

Solución

Lo tengo!

@implementation UINavigationBar(MyNavigationBar)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"navBarBackgrd.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

de vista de navegación

Otros consejos

Después de iOS5 Usted debe hacer esto, por ejemplo, en AppDelegate


 UIImage *img = [[UIImage imageNamed:@"image.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:0 green: 0 blue:0  alpha:1]];

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top