Personnalisé UINavigationController UIToolbar Image D'Arrière-Plan
J'ai une application iPhone à l'aide UINavigationController
et souhaitez personnaliser les éléments personnalisée avec des images d'arrière-plan. J'ai été en mesure de le faire pour les UINavigationController's
UINavigationBar
assez facilement à l'aide d'Objective-C catégories comme ci-dessous:
http://foobarpig.com/iphone/uinavigationbar-with-solid-color-or-image-background.html
J'aimerais faire de même pour le UINavigationController's
UIToolbar
, mais la même approche ne semble pas fonctionner (bien que je n'ai absolument aucune idée de pourquoi pas.) J'ai regardé autour et les gens semblent suggérer de sous-classement UIToolbar
, mais ce n'est pas possible pour le UINavigationController's
de la barre d'outils, qui est en lecture seule UIToolbar
. Je veux utiliser le UINavigationController's
de la barre d'outils au lieu de simplement faire une sous-vue de la barre d'outils, parce que je suis en utilisant le glisser dans setToolbarHidden
animation.
Quelqu'un a une idée si c'est possible d'appliquer une image de fond à cette UINavigationController
de la barre d'outils (la plus probable en quelque sorte de substitution de la drawRect
méthode)?
OriginalL'auteur Chris | 2010-07-14
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin à la sous-classe au lieu de créer une catégorie.
Je ne sais pas trop pourquoi une catégorie de travaux pour
UINavigationBar
mais pasUIToolbar
, mais sous-classement des œuvres pour deux d'entre eux et je pense que c'est la plus standard de la mode de la personnalisation des trucs comme ça.Donc à la sous-classe
UIToolbar
, créer une classe appeléeMyToolbar
(ou quelque chose de similaire) et le déposer dans le .h:Et ce dans le la .m fichier:
À partir de là que vous avez eu l'occasion de dire la manette de Navigation à utiliser
MyToolbar
au lieu deUIToolbar
. Façon la plus simple que j'ai trouvé pour le faire est de sélectionner votre manette de Navigation dans Interface Builder, puis dans les Attributs de l'Inspecteur de vérifier le Montre la Barre d'outils' de la boîte. La barre d'outils doit s'afficher dans l'NavigationController
fenêtre. Cliquez sur, puis dans l'Identité de l'Inspecteur de changer la classe deMyToolbar
.Je voudrais aussi savoir comment remplacer la barre d'outils de la programmation. Merci!
Quelqu'un a trouvé comment la dernière étape peut être effectuée par programmation?
Demande/réponse dans un autre DONC, la question car j'avais besoin de savoir: stackoverflow.com/a/15767291/1106878
OriginalL'auteur Alex Robinson
Mise à jour:
Dans iOS 5.0+ vous pouvez maintenant utiliser
UIAppearance
pour personnaliser la barre de navigation.Une autre façon de le faire est de simplement créer une Catégorie pour votre application
UINavigationBar
classe. Cela a été assez simple à mettre en œuvre:Interface:
Mise en œuvre:
Puis ce sera à l'échelle mondiale appliquée à tous vos
UINavigationBar
's automatiquement.Wow, bon point. J'ai totalement raté la marque sur celui-ci. Encore une bonne solution pour la barre de navigation de bien 🙂
J'ai ajouté deux fichiers de mon code, UINavigationBar.h et UINavigationBar.m et a ajouté ce code. J'ai aussi essayé avec les noms de fichiers JHNavigationBar.h/.m. Il n'était pas appliquée automatiquement pour moi. Ce qui me manque?
vous êtes sous iOS 5.0+? Si vous avez besoin d'utiliser UIAppearance à personnaliser. Cela ne fonctionne que sur les versions antérieures à la version 5.0.
Avez-vous d'inclure le fichier d'interface, où est-il utilisé? Ajouter le fichier au projet ne signifie pas qu'il va s'habituer. Assurez-vous de #import où vous souhaitez l'utiliser.
OriginalL'auteur Maurizio
L'une des meilleures solutions est de créer une catégorie de UINavigationBar et UIToolbar. La prochaine classes vous donne une solution pour iOS 4.0 et iOS 5.0 compatibilité:
La seule chose est que vous devez appeler la prochaine méthodes dans votre viewDidLoad par exemple:
Ainsi, la Catégorie de classe pour iOS 4.0 et iOS 5.0 compatibilité pour personnaliser BackgroundImage résultats comme suit:
Accueille!
OriginalL'auteur jalopezsuarez
D'une option simple est de la sous-classe UINavigationBar/UIToolbar et initialiser la manette de navigation à l'aide de la méthode:
- (instancetype)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass
Toutefois, pour les personnalisations simples (comme images d'arrière-plan, les ombres, etc.) Je vous recommande d'utiliser le
UIAppearance
protocole de modèle.OriginalL'auteur vilanovi