iOS 5: Comment mettre en œuvre un personnalisé (image) bouton de retour
J'ai fait le tutoriel de mon blog, donc je sais comment faire un extensible bouton qui permet d'afficher le fond (de la pile) viewcontroller du titre. Mais ce que j'espérais faire est d'avoir des icônes (comme une maison pour la MAISON) et pas de texte, pas de redimensionnement.
L'utilisation de mon image personnalisée et ce code ci-dessous, je reçois une version allongée (pas voulu) avec le titre plus haut (pas voulu) et il ne tint/mise en évidence lorsque l'utilisateur clique dessus (c'est bon);
UIImage *backButtonImage = [UIImage imageNamed:@"backButton_30.png"];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Maintenant, j'ai cherché ici et de lire toutes les questions similaires qui, de retour de vieilles réponses, et d'avoir des résultats étranges pour moi. Voici le code que j'ai essayé;
UIImage *backButtonImage = [UIImage imageNamed:@"backButton_30.png"];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:backButtonImage style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
Cette méthode n'étend pas mon image personnalisée bouton (qui est bon), et ne montre pas de texte (ce que je veux) mais il est encore à l'original bouton bleu sous (WTF), et mon bouton personnalisé n'est pas la teinte lorsque l'utilisateur clique dessus, seul le bouton bleu sous il ne!
S'il vous plaît aider, ce qui me manque?
*Mise à JOUR
J'ai corrigé un peu à l'aide d'un de redimensionner l'image. Cette force de ne pas étirer
UIImage *backButtonHomeImage = [[UIImage imageNamed:@"backButtonHomeWhite_30.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonHomeImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Pour corriger le titre affiche sur le bouton que j'avais à faire
self.title =@" ";
Maintenant, c'est un peu un sale fixer, mais il semble fonctionner. Le seul problème qui reste maintenant c'est que je veux un autre bouton de retour sur les différents points de vue, et cette méthode est à l'origine de certains problèmes; le dernier point de vue qui définit le bouton annule toutes les autres vues. Donc en fin de compte, selon la façon dont vous naviguer à travers l'application, le retour à la vue précédente qui a le mauvais bouton de retour et il n'a jamais remis à la bonne.
MISE À JOUR 2: POTENTIEL IDÉE:
Suite être une solution raisonnable, ou est-il un hack qui est responsable de casser quelque chose?
Cacher le défaut de bouton de retour, comme si,
[self.navigationItem setHidesBackButton:YES animated:NO];
...et puis en utilisant une mesure UIBarButtonItem, avec un bouton dans le style que je veux en fait placé dans l'emplacement de la touche retour, qui envoie un popViewControllerAnimated: message à la UINavigationController gemmage.
Si vous connaissez une solution plus robuste veuillez faire partager, merci.
Je voudrais bien savoir comment... j'ai choisi le premier-vue-contrôleur dans le storyboard, puis est allé à l'attribut de l'inspecteur et je ne m'en fait voir une boîte en vertu de l'élément de navigation qui dit bouton de retour, cependant je n'ai aucune idée de comment l'utiliser; j'ai essayé en tapant le nom de l'image, mais il ne semble pas faire quoi que ce soit. Toutes les suggestions?
Il y a une autre approche pour résoudre ce - que vous pourriez faire glisser un bouton générique de la barre de navigation, et puis jouer avec des images et les noms.. j'espère que cela vous aide!
Y aurait-il alors être un moyen de puis assurez-vous que le bouton d'assumer le comportement de la touche retour?
OriginalL'auteur RobDigital | 2012-05-25
Vous devez vous connecter pour publier un commentaire.
En supposant que votre solution actuelle
est acceptable pour vous, de sorte que le seul problème de la gauche est de savoir comment mettre à jour ce bouton appeareance lorsque vous aller et retour entre votre point de vue, une approche qui pourrait fonctionner pour exécuter le code ci-dessus dans chacun de vos contrôleurs de la
viewWillAppear:
méthode:Si vous n'êtes pas satisfait de votre approche à avoir un personnalisé
UIBarButtonItem
, le chemin à parcourir est de l'initialisation de votre bouton de la barre d'élément avecinitWithCustomView:
. Dans ce cas, vous pouvez spécifier, par exemple, unUIImageView
avec l'image que vous aimez et cela devrait fonctionner:Espère que cette aide.
OriginalL'auteur sergio
Pour iOS 5+ utilisation
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"someimage.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]
.Votre image doit être à la même hauteur / largeur d'Apple. Vous pouvez également créer un de redimensionner l'image à l'aide de
[[UIImage imageNamed:@"someimage.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(6, 6, 6, 6)]
. L'image doit être à la même hauteur que Apple, mais la largeur ne doit être aussi grand que nécessaire pour s'adapter à la gauche & à droite maj + 1px dans le milieu qui sera étirée par programme en fonction du texte.Merci pour la suggestion Andrew, cependant vous n'avez pas à régler le problème principal d'avoir différents personnalisée de retour des boutons sur chaque vue avec des images différentes et PAS de TEXTE.
quelle hauteur est des pommes?
Apple est de 30 points de haut (donc 30px non-retina, 60px rétine). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @RobDigital: Pour cela vous aurez à régler manuellement la
self.navigationItem.leftBarButtonItem
sur unUIViewController
à votre propreUIBarButtonItem
. Vous pouvez en créer un à l'aide deinitWithCustomView
de complètement personnaliser l'INTERFACE utilisateur, ou de l'utilisationappearanceWhenContainedIn
pour personnaliser le bouton de retour de l'image sur un point de vue spécifique. Vous aurez besoin d'utiliser lainitWithCustomView
méthode si vous voulez vous débarrasser du titre. Apple recommande, cependant, que votre dos boutons contextuelle à chaque fois que possible.OriginalL'auteur Andrew Theis
Un peu de code que j'ai utilisé dans un projet:
Remarque, cela fonctionne sur iOS 4 et 3 aswell.
OriginalL'auteur TegRa
si Vous utilisez des story-boards , c'est trop facile . prenez un tour rectangulaire bouton et le placer sur la barre de navigation . double-cliquez ensuite sur le bouton( sur la sélection,au premier abord, il montre juste les attributs de la barre de bouton , mais en sélectionnant deux fois , vous pouvez changer toutes ses propriétés comme si vous êtes à la personnalisation d'un régulier de l'INTERFACE utilisateur bouton) .
OriginalL'auteur shashank
UIAppearance
n'est d'aucune utilité dans ce cas.J'ai essayé d'utiliser:
- [UIBarButtonItem initWithCustomView:]
.Le point de vue ici, vous pouvez ajouter votre image d'arrière-plan et le titre, tout ce que vous voulez.
OriginalL'auteur scorpiozj