11
votes

iPhone - Navigationbar Fond personnalisé

Duplicaté possible:

Comment ajouter une image de fond sur la barre de navigation iPhone?

Je cherche un moyen d'avoir une barre de navigation personnalisée et de disposer d'une barre de navigation personnalisée pour y parvenir. Je cherchais à faire cela, mais je n'ai pas trouvé de solution. Si quelqu'un a la solution, l'aide est très appréciée.


1 commentaires

Il y a plus de solutions de solutions alternatives ici: Stackoverflow.com/questions/1692487/...


4 Réponses :


6
votes

Vous pouvez simplement ajouter une sous-vision (un UIImageView) à la barre de navigation, qui est juste une sous-classe UIView.

UINavigationBar nb = [[UINavigationBar alloc]init];
[nb addSubview: foo];
[nb release];


0 commentaires

10
votes

(complément à la réponse d'Andrew Johnson)

La publication Apple.com Linked Apple.com comprend 3 ou 4 solutions différentes, dont la plupart ne fonctionnent que "la moitié". Je pense que le plus élégant / efficace d'eux est celui-ci: xxx

Cependant ... ce n'est pas une bonne pratique objc à OD qui comme catégorie (devrait être une substitution) et cela a des problèmes de son propre.

Donc, une solution plus générale et plus puissante est ici:

http://samsoff.es/posts/customize-uikit-with-method-swizzling


2 commentaires

Merci de me lier à Adam :) Vous avez raison que les méthodes primordiales avec catégories sont une très mauvaise pratique.


Quelqu'un a-t-il descendu cela sans explication? Pas certain de pourquoi. Bien que j'ajouterais: toute cette question (et la plupart des réponses) sont uniquement iOS 2/3/4 uniquement - iOS 5 a un tout nouveau système de faire cela. La réponse fonctionne toujours pour les personnes qui font iOS4.



14
votes

Depuis iOS5, vous pouvez facilement définir un arrière-plan personnalisé, avec la méthode SetbackImage: FurmisRetrics: em> Mais vous devez vérifier si le téléphone de l'utilisateur a le bon système d'exploitation.

if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
{
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"texture.png"]
                                                  forBarMetrics:UIBarMetricsDefault];
}


2 commentaires

Jusqu'à ce qu'un utilisateur qui ne fonctionne pas iOS5 exécute votre application


Oui, mais il y a un chèque pour cela. Vous pouvez faire autre chose dans la clause d'origine.



3
votes

Copiez-le dans ViewDidLoad. Il vérifiera l'iOS 5 et utilisera la méthode préférée, sinon elle ajoutera une sous-Sous-site à la barre NAV pour les versions iOS <5.0. Cela fonctionnera à condition que votre image de fond personnalisée n'a pas de transparence.

 XXX                                  

0 commentaires