Je serais ravi de créer un bouton "arrière" flèche-lunette gauche dans un UIToolbar
.
Pour autant que je sache, la seule façon d'obtenir l'un d'eux est de laisser les UINavigationController
paramètres par défaut et il en utilise un pour l'élément de barre de gauche. Mais il n'y a aucun moyen que je puisse trouver pour en créer un en tant que UIBarButtonItem
, donc je ne peux pas en créer un dans une norme UIToolbar
, même s'ils sont très similaires àUINavigationBar
art.
Je pourrais le créer manuellement avec des images de bouton, mais je ne trouve les images source nulle part. Ils ont des bords de canal alpha, donc la capture d'écran et la découpe n'obtiendront pas des résultats très polyvalents.
Avez-vous des idées au-delà de la capture d'écran pour chaque taille et schéma de couleurs que j'ai l'intention d'utiliser?
Mise à jour: VEUILLEZ ARRÊTER d'esquiver la question et de suggérer que je ne devrais pas poser cette question et que j'utiliseraisUINavigationBar
. Mon application est Instapaper Pro. Il ne montre qu'une barre d'outils en bas (pour économiser de l'espace et maximiser la zone de contenu lisible), et je souhaite mettre un bouton Retour en forme de flèche gauche en bas.
Me dire que je ne devrais pas avoir besoin de faire cela n'est pas une réponse et ne mérite certainement pas une prime.
Réponses:
J'ai utilisé le psd suivant que j'ai dérivé de http://www.teehanlax.com/blog/?p=447
http://www.chrisandtennille.com/pictures/backbutton.psd
Je viens alors de créer une UIView personnalisée que j'utilise dans la propriété customView de l'élément de barre d'outils.
Fonctionne bien pour moi.
Edit: Comme l'a souligné PrairieHippo , maralbjo a constaté que l'utilisation du code simple suivant a fait l'affaire (nécessite une image personnalisée dans le bundle) devrait être combinée avec cette réponse. Voici donc un code supplémentaire:
la source
La méthode Unicode
Je pense qu'il est beaucoup plus facile d'utiliser simplement un caractère unicode pour faire le travail. Vous pouvez regarder à travers les flèches en recherchant sur Google les triangles Unicode ou les flèches Unicode . À partir d'iOS6, Apple a changé le caractère en un caractère emoji avec une bordure. Pour désactiver la bordure, j'ajoute le sélecteur de variation Unicode 0xFE0E .
Le bloc de code est juste pour la démo. Cela fonctionnerait dans n'importe quel bouton qui accepte une NSString.
Pour une liste complète des caractères, recherchez Google pour le caractère Unicode et ce que vous voulez. Voici l'entrée pour le triangle de pointage noir à gauche .
Résultat
la source
AVERTISSEMENT: certains rapports indiquent que cela ne fonctionnera pas sur iOS 6. Cela pourrait ne fonctionner que sur les anciennes versions du système d'exploitation. De toute évidence, au moins un développeur a vu son application rejetée pour avoir utilisé cette astuce (voir les commentaires). À utiliser à vos risques et périls. L'utilisation d'une image (voir la réponse ci-dessus) pourrait être une solution plus sûre.
Cela peut être fait sans ajouter vos propres fichiers image à l'aide du bouton sekr1t de type 101 pour obtenir la forme correcte. Pour moi, l'astuce consistait à déterminer que je pouvais utiliser
initWithCustomView
pour créer leBarButtonItem
. J'ai personnellement eu besoin de cela pour une barre de navigation dynamique plutôt que pour untoolbar
, mais je l'ai testée avec une barre d'outils et le code est presque le même:Si vous faites cela sur une barre d'outils, vous devrez modifier la façon dont vous définissez les éléments, mais cela dépend du reste de votre code et je laisse cela comme un exercice pour le lecteur. : P Cet échantillon a fonctionné pour moi (compilé et exécuté).
Bla bla, lisez le HIG, n'utilisez pas de fonctionnalités non documentées, et tout ça. Il n'y a que six types de boutons pris en charge et ce n'est pas l'un d'entre eux.
la source
Tout d'abord, vous devez trouver une image du bouton de retour. J'ai utilisé une belle application appelée Extractor qui extrait tous les graphiques de l'iPhone. Dans iOS7, j'ai réussi à récupérer l'image appelée
UINavigationBarBackIndicatorDefault
et elle était de couleur noire, car j'avais besoin d'une teinte rouge,je change la couleur en rouge en utilisant Gimp.ÉDITER:
Comme l'a mentionné btate dans son commentaire, il n'est pas nécessaire de changer la couleur avec l'éditeur d'image. Le code suivant devrait faire l'affaire:
Ensuite, j'ai créé une vue qui contient une imageView avec cette flèche, une étiquette avec le texte personnalisé et au-dessus de la vue, j'ai un bouton avec une action. J'ai ensuite ajouté une animation simple (décoloration et traduction).
Le code suivant simule le comportement du bouton Précédent, y compris l'animation.
ÉDITER:
Au lieu d'ajouter le bouton, à mon avis, la meilleure approche consiste à utiliser un reconnaisseur de gestes.
la source
imageView.tint = [UIColor redColor]
le mode de rendu de teinte et de modèle sur l'image.imageView.image = [yourImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
Je ne sais pas si cela fonctionnerait, mais vous pouvez essayer de créer un
UINavigationController
avec les paramètres par défaut pour créer le bouton, trouver le bouton dans la hiérarchie de sous-vue du contrôleur de navigation, l'appelerremoveFromSuperview
, détruire le contrôleur de navigation, puis ajouter le bouton comme une sous-vue de votre barre d'outils. Vous devrez peut-être égalementretain
le bouton avant d'appelerremoveFromSuperview
(puisrelease
après l'avoir ajouté en tant que sous-vue de votre barre d'outils) pour éviter qu'il ne soit désalloué pendant le processus.la source
Pour faire un UIButton avec une flèche assez proche (je ne suis pas un designer;) de la flèche de retour du système iOS 7:
La norme:
Apple SD Gothic Neo
Dans Xcode:
Ref @ staticVoidMan's answer to Back-like arrow on iOS 7
la source
Si vous ne voulez pas vous embêter avec les fichiers image, la forme de flèche peut être dessinée dans une sous-classe UIView avec le code suivant:
où la vue de la flèche est proportionnelle à une largeur de 6,0 et une hauteur de 10,0
la source
Travaille pour moi. Je l'ai utilisé lorsque j'avais plus d'onglets, puis je pouvais tenir dans la barre d'onglets, et un contrôleur de vue poussé à partir du "Plus" a remplacé le leftBarButtonItem dans son viewDidLoad.
la source
Vous pouvez trouver les images source en les extrayant de Other.artwork dans UIKit $ {SDKROOT} /System/Library/Frameworks/UIKit.framework/Other.artwork. La communauté de modding a quelques outils pour les extraire, ici . Une fois que vous avez extrait l'image, vous pouvez écrire du code pour la recolorer si nécessaire et la définir comme image de bouton. Que vous puissiez ou non expédier une telle chose (car vous incorporez des illustrations dérivées) peut être un peu risqué, alors vous voudrez peut-être parler à un avocat.
la source
La bibliothèque Three20 a un moyen de le faire:
la source
J'ai trouvé que l'utilisation du code simple suivant a fait l'affaire (nécessite une image personnalisée dans le bundle):
la source
Voici ce que j'ai fini par faire après avoir recherché toutes ces solutions et d'autres. Il utilise un png extensible extrait des images UIKit. De cette façon, vous pouvez définir le texte comme vous le souhaitez
la source
C'est facile à faire avec Interface Builder dans Xcode 5.x
utiliser la barre d'outils et l' élément de bouton de barre de la bibliothèque d'objets
dans l' inspecteur des attributs du bouton, éditez la section Image avec l' image de votre bouton de retour
Terminé!
la source
J'essayais de faire la même chose, mais je voulais que le bouton de retour soit dans la barre de navigation. (J'avais en fait besoin d'un bouton de retour, cela ferait plus que revenir en arrière, j'ai donc dû utiliser la propriété leftBarButtonItem). J'ai essayé ce qu'AndrewS a suggéré, mais dans la barre de navigation, il ne ressemblerait pas à ce qu'il devrait, car l'UIButton a été en quelque sorte casté en UIBarButtonItem.
Mais j'ai trouvé un moyen de contourner ce problème. En fait, je viens de mettre un UIView sous le UIButton et de définir le customView pour le UIBarButtonItem. Voici le code, si quelqu'un en a besoin:
la source
Pour créer une image pour la barre d'outils UIT, faites un png dans photoshop et O E IL Y A TOUTE couleur, il le met en blanc, et où il est alpha = 0 alors il le laisse tranquille.
Le SDK place la bordure autour de l'icône que vous avez créée et la rend blanche sans que vous ayez à faire quoi que ce soit.
Vous voyez, c'est ce que j'ai fait dans Photoshop pour mon bouton avant (évidemment, échangez-le pour le bouton retour):
http://twitpic.com/1oanv
et voici à quoi cela ressemblait dans Interface Builder
http://twitpic.com/1oaoa
la source
Solution SANS utiliser de png. Sur la base de cette réponse SO: Ajout de la petite flèche sur le côté droit d'une cellule dans une cellule iPhone TableView
Il suffit de retourner la UITableViewCell horizontalement!
la source
Swift 5.2 Xcode 11.4
Le symbole Apple chevron.left permet désormais une solution plus élégante pour créer un bouton personnalisé. J'ai fait correspondre la taille et l'espacement le plus près possible.
Cela peut être mis en œuvre en tant
UIToolbarItem
queUINavigationItem
Si vous voulez retourner le bouton et avoir la flèche pointant vers la droite:
Utilisez le symbole Apple nommé "chevron.right"
Ajoutez le code suivant à la
CustomBackButton
classe:la source
Si vous voulez éviter de le dessiner vous-même, vous pouvez utiliser la classe non documentée: UINavigationButton avec le style 1. Cela pourrait, bien sûr, empêcher l'approbation de votre application ... / John
la source
Eh bien, vous n'avez pas besoin d'avoir un bouton différent pour chaque taille, vous pouvez l'utiliser
[UIImage stretchableImageWithLeftCapWidth:topCapHeight:]
, mais la seule chose que j'ai trouvée est des images personnalisées.la source
J'ai eu un problème similaire et j'ai sorti une bibliothèque PButton . Et l'exemple est le bouton de navigation arrière comme le bouton, qui peut être utilisé n'importe où, tout comme un bouton personnalisé.
Quelque chose comme ça:
la source
Exemple dans Swift 3, avec un bouton précédent et un bouton suivant en haut à droite.
la source
Rapide
la source
Essaye ça. Je suis sûr que vous n'avez pas besoin d'une image de bouton de retour pour en créer une.
C'est tout ce que vous avez à faire :)
la source
Pourquoi fais-tu ça? Si vous voulez quelque chose qui ressemble à une barre de navigation, utilisez UINavigationBar.
Les barres d'outils ont un style visuel spécifique qui leur est associé. Les directives d'interface humaine pour l'état de l'iPhone:
Il donne ensuite plusieurs exemples visuels d'icônes à peu près carrées sans texte. Je vous exhorte à suivre le HIG à ce sujet.
la source