2010-07-11 22 views
2

Je suis en train de créer un UINavigationController avec une image d'arrière-plan ...iPad UINavigationController Bar Image de fond personnalisée

je le code suivant en haut de la classe où je Mettre en oeuvre le UINavigationController.

@implementation UINavigationBar (UINavigationBarCategory) 
- (void)drawRect:(CGRect)rect { 
UIImage *img = [UIImage imageNamed:@"header.jpg"]; 
[img drawInRect:CGRectMake(0, 0, self.frame.size.width,self.frame.size.height)]; 
} 

@end 

Puis, à l'intérieur de mon @implementation de mon contrôleur dans la fonction « viewDidLoad », je suit ...

MainViewController *controller = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; 

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:controller]; 
self.navController = nav; 
[nav release]; 

Je sais que je suis proche, parce que tout fonctionne presque parfaitement, sauf que l'image est de 150px de hauteur, et qu'elle est écrasée à une taille plus petite (faire un journal de self.frame.size.height me donne 44.0000) mais est abaissée d'un certain nombre de pixels du haut ...

Je sais que je suis proche, mais si quelqu'un pouvait m'aider, ce serait très apprécié.

Merci,

-D

Répondre

1

Vous avez vraiment besoin de faire réellement votre image de la même taille que votre barre de navigation. N'essayez pas de le faire à moins que vous ayez vraiment de l'art fait pour un UINavigationBar.

Ce code fonctionne, tant que les dimensions sont correctes:

- (void)drawRect:(CGRect)rect { 
    [img drawInRect:rect]; 
} 

Pour soutenir différentes orientations avec des barres de navigation de différentes tailles, envoyez -[UIApplication statusBarOrientation] (je l'ai entendu beaucoup de gens qui -[UIDevice orientation] ne fonctionne pas comme prévu, mais je ne l'ai pas essayé).

+0

pas la solution que je voulais :(, mais j'apprécie l'aide! souhaite que c'était possible – dewberry