1

J'ai besoin d'une image de fond ET d'un titre dans ma barre de navigation. Pour l'image que j'écrire une catégorie:Objective-C: Image de fond et titre dans la barre de navigation

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

J'appelle cette catégorie dans mon AppDelegate et avoir des images d'arrière-plan dans l'ensemble de l'application:

[navigationController.navigationBar setBackgroundImage]; 

Chaque ViewController a un titre:

[self setTitle:@"MyTitle"]; 

Mais après avoir réglé l'image de fond, j'ai un problème avec le titre.

Dans la première vue tous les travaux, je vois l'image de fond et le titre :-) Mais dans la vue suivante, le titre disparaît. Seule l'image d'arrière-plan est visible. Peut-être que le titre est sous l'image?

Techniquement, il est possible de montrer les deux. Avec cette astuce, il fonctionne:

  1. Cacher la barre de navigation avant d'ouvrir la prochaine ViewController:

    [self.navigationController setNavigationBarHidden: OUI];

  2. Afficher la barre de navigation dans la prochaine ViewController:

    [self.navigationController setNavigationBarHidden: NO];

Maintenant, l'image et le titre sont visibles, mais cette solution n'est pas le meilleur ;-)

Répondre

2

Je l'ai!

@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 

Voir Background image for navigation view

2

Après IOS5 vous devriez le faire, par exemple dans 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]]; 

+1

mais vous ne pouvez pas mettre titleview en utilisant ce code: - |. Vous devez faire une catégorie pour cela. –

Questions connexes