UINavigationBar setBackgroundImage: forBarMetrics: ne fonctionne pas
Je viens de passé sur iOS 5 et tout semble fonctionner dans mon application en dehors de la barre de navigation personnalisée. J'ai regardé autour et a suivi tout le monde à la suggestion de l'appel de la nouvelle méthodes setBackgroundImage: forBarMetrics: cependant, il ne semble pas fonctionner. C'est le code que j'ai essayé de placer à la fois dans l'application délégué et dans la méthode viewDidLoad de certains de la vue des contrôleurs:
UINavigationBar *nb = [[UINavigationBar alloc]init];
if( [nb respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] )
{
UIImage *image = [UIImage imageNamed:@"navBarBackground.png"];
[nb setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
[nb release];
Malheureusement cela ne fonctionne pas. Si quelqu'un a des suggestions, je suis preneuse!
source d'informationauteur Nick ONeill
Vous devez vous connecter pour publier un commentaire.
À appliquer
image
pour tous vos barres de navigation, utiliser l'apparence proxy:Pour un individu bar:
Dans votre exemple, l'image de fond ne changera pas parce que
nb
n'est pas relié à quoi que ce soit.Réponse par rob est correct, mais si l'application s'exécute sur l'iOS 4.3 ou plus bas app crash. De sorte que vous pouvez mettre en œuvre la présente comme
Ce sera mis en image pour les deux mode Paysage et Portrait
Vous avez besoin pour obtenir la barre de navigation à partir d'une manette de navigation. Droit maintenant, vous êtes juste de créer une seule et puis il deallocs lorsque vous la relâchez. Vous avez besoin pour obtenir la manette de navigation pour votre vue-contrôleur.
Noter que si vous souhaitez appliquer les mêmes à une barre d'outils, il est légèrement différent. Voici un exemple, en s'appuyant sur Rob réponse:
Vous n'avez pas fait quelque chose comme utiliser un UINavigationBar sous-classe? Si vous faites cela et remplacer drawRect: sur iOS5 et au-dessus, les choses vont se briser.
Voir ma réponse ici un moyen de soutenir les deux versions de système d'exploitation.
Cela a fonctionné pour moi.