2010-11-23 20 views

Répondre

4

Si vous voulez changer l'arrière-plan de la barre de navigation trop sans utiliser la catégorie, cela pourrait être utile de donner cette sensation, voir si elle répond à vos besoins:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

     UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)]; 
     //here for v, width= navBar width and height=navBar height 

    [v setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"a.png"]]]; 

    [self.view addSubview:v]; 

    [v release]; 

    [self.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]]; 

    [self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent]; 
} 
+0

je vous remercie pour votre réponse ... j'essayais cela aussi, et c'est fait aussi :) en utilisant cette réponse, faites-moi changer l'arrière-plan de la barre de navigation différente, en utilisant une image différente :) –

+0

c'est ok. et merci pour votre réponse. –

0

Pour ajouter une image d'arrière-plan à UINavigationBar, vous devez créer une catégorie qui étend UINavigationBar. Trouvez simplement le code ci-dessous et ajoutez-le dans votre fichier d'implémentation. Après l'avoir implémenté, vous pouvez l'appeler n'importe où dans votre application et vous pouvez voir le changement sur chaque vue. N'oubliez pas d'ajouter une image dans votre dossier de ressources.

+0

non, catégorie représente l'extension à la classe déjà existante .... – marko

+0

vous pouvez trouver plus d'infos ici ... http://www.youtube.com/watch?v=YHwnY-TOBlY – marko

+0

vous pouvez ajouter ce code dans le fichier d'implémentation de votreContrôleurVue avant @implementation – marko

2
#import "ImageViewController.h" 

@implementation UINavigationBar (CustomImage) 

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

@end 
implement this code in your .m file 


@implementation ImageViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.navigationController.navigationBar.tintColor = [UIColor blackColor]; 
    UIImageView *backGroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]]; 
    [self.navigationController.navigationBar insertSubview:backGroundView atIndex:0]; 
    [backGroundView release]; 
} 

@end 
+0

merci beaucoup .... il est vraiment aide fulll (n_n) –

+0

les gars ... j'ai essayé votre code, mais sans mettre en œuvre la catégorie dans la méthode viewDidLoad, l'arrière-plan est toujours affiché .. est-ce quelque chose de mal? ? Je suis désolé, ma compréhension est encore faible –

+0

les gars ... je sais savoir.customization à cette catégorie font de l'arrière-plan de chaque barre de navigation dans cette application changer en image qui définissent là. Donc, si j'ai 3 barre de navigation, chaque arrière-plan a le même arrière-plan. Mais si je veux changer et rendre chaque arrière-plan différent, que dois-je faire ??? j'essaye de définir dans chaque viewDidLoad, mais chaque arrière-plan montre juste le tintColor, pas l'image ... que devrais-je faire ??? –

3

Vous pouvez ajouter l'image directement en arrière-plan de la barre de navigation avec le code ci-dessous

[navigation_bar setBackgroundImage:[UIImage imageNamed:@"image.jpg"] forBarMetrics:UIBarMetricsDefault];