2009-05-11 8 views
4

Je souhaite remplacer le bouton de retour et la barre de navigation complète de mon application iPhone par des images personnalisées. Tout d'abord, est-ce possible? Deuxièmement, si oui, comment? Merci.Barre de navigation iPhone Images

+1

Voulez-vous dire des images personnalisées pour seulement les boutons de la barre de navigation, ou l'ensemble de navigation bar lui-même (fond, etc)? –

+0

Je serais intéressé par les boutons aussi réellement =) – Pasta

Répondre

17

Ce code modifiera chaque UINavigationBar dans votre application.

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

Ceci devrait être marqué comme la réponse. –

+0

Cela a très bien fonctionné, merci pour la pointe – Robert

+0

@pierre bonne réponse, vous devriez demander un appel à super juste au cas où vous souhaitez conserver les boutons de retour par exemple. –

0

Vous ne serez pas en mesure de remplacer facilement l'aspect et la convivialité de la barre de navigation d'Apple, et même si vous le pouvez, il y a de bonnes chances que cela va à l'encontre de leur politique d'éviter les API privées. Cependant, il est assez simple de créer votre propre barre de navigation à l'aide de toutes les images personnalisées. Cela fonctionnerait bien pour les écrans uniques qui ont besoin de la barre de navigation, mais seront une bête à implémenter sur une hiérarchie UINavigationController complexe.

Éditer: Il semble que les gens ont pu changer l'arrière-plan en remplaçant le sélecteur -drawRect: Custom background for UINavigationBar?. Je ne vois aucun rapport indiquant si les modifications ont été approuvées pour l'App Store.

+2

J'ai été témoin de nombreuses applications qui impliquent que cette pratique soit approuvée pour la vente dans le magasin. Apple s'en fout. –

0

Vous pouvez utiliser ce code pour changer l'image de la barre de navigation et de l'image de la barre d'onglets à vos images personnalisées:

if([[UINavigationBar class] respondsToSelector:@selector(appearance)]) {//iOS >=5.0 
    UIImage *image = [UIImage imageNamed:@"myCustomImage.png"]; 

    CGSize newSize = CGSizeMake(self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height); 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect: CGRectMake(0, 0, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height)]; 


    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    [self.navigationController.navigationBar setBackgroundImage:newImage forBarMetrics:UIBarMetricsDefault]; 

    [[UIToolbar appearance] setBackgroundImage:newImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 
    [[UITabBar appearance] setBackgroundImage:newImage]; 
    [[UITabBar appearance] setSelectedImageTintColor:[UIColor cyanColor]]; 
} 
Questions connexes