2010-12-03 5 views
1

Comment les personnalisations UINavigationBar peuvent-elles être effectuées? Utilise-t-il des sous-classes ou des catégories?Personnalisation de UINavigationBar comme dans Fox news Application iPhone

Fox news iphone app

Je suis intéressé par 2 aspects:

  1. Ajouter une image à la barre de navigation (comme le logo FOXNews)
  2. Personnalisation du bouton de retour à "Spectacles". (Le bouton de retour prend habituellement le titre de la vue précédente dans la pile, mais il n'y a pas de titre dans la vue précédente.)

Merci d'avance pour toute aide

Répondre

7

pour l'application Nouvelles Fox on dirait qu'ils ju st définir la couleur de la teinte de la barre de navigation. En ce qui concerne le logo de Fox News, il s'agit probablement d'une vue d'image sur la vue du titre de la barre de navigation. Ce code va dans une méthode de contrôleur de vue viewDidLoad:

[self.navigationController.navigationBar setTintColor:/* Custom color here */]; 

UIImageView *logoView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo"]]; 
[self.navigationItem setTitleView:logoView]; 
[logoView release]; 

Pour personnaliser le bouton de retour que vous devez placer dans la méthode viewDidLoad du contrôleur de vue précédente (celui que ce bouton ramène à):

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Shows" 
    style:UIBarButtonItemStyleBordered target:nil action:nil]; 
[self.navigationItem setBackBarButtonItem:backButton]; 
[backButton release]; 

Si vous souhaitez utiliser une image d'arrière-plan totalement personnalisé pour la barre de navigation de votre application, vous devez créer une catégorie personnalisée UINavigationBar et dessiner l'image dans sa méthode drawRect:. Quelque chose comme ceci:

@implementation UINavigationBar (UINavigationBarBackgroundImage) 

- (void)drawRect:(CGRect)rect 
{ 
    [[UIImage imageNamed:@"navigation-bar"] drawInRect:rect]; 

    // Optionally you can set the tintColor here to go with the background 
} 

@end 
0

ajouter l'image à la barre de navigation utiliser ce code

- (void)drawRect:(CGRect)rect { 

UIColor *color = [UIColor blackColor]; //this use to set button color in FoxNew Site //button color 
UIImage *img = [UIImage imageNamed: @"ImageName"]; 
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
self.tintColor = color; 

} 

créer une catégorie pour UINavigationBar

@implementation UINavigationBar (UINavigationBarCategory) 
    - (void)drawRect:(CGRect)rect { 
    } 

@end 
+0

J'ai essayé ceci, mais l'image ne s'anime pas quand la barre de navigation est animée (quand une nouvelle vue est poussée ou sautée). – Shameem

+0

@sleepy: Cela est dû au fonctionnement de 'UINavigationBar'. C'est parfaitement normal. Si vous voulez toujours l'animer, je ne sais pas comment. – BoltClock

Questions connexes