J'ai un uibarbuttonitem sur une barre de navigation. Je voudrais le faire en forme de flèche. Par ce que je veux dire, je veux que ce soit carré sauf un côté pointu. Est-ce que quelqu'un sait comment faire cela? P>
merci! p>
6 Réponses :
Vous pouvez créer un UIImageView ou un uibutton avec l'image requise, puis utilisez:
[[UIBarButtonItem alloc] initWithCustomView: arrowButton];
faire un arrière-plan personnalisé. Voir Création d'un bouton de flèche gauche ( comme le style "arrière" d'Uinavigationbar) sur un uitoolbar pour comment.
Vous pouvez pour des méthodes sans papiers, vous pouvez utiliser p> pour créer un "bouton" ". p> p> -pushnavigationItem: animé: code> Pour que le bouton arrière intégré apparaisse, bien que vous ne puissiez pas Attribuez des actions personnalisées à elle. p>
@Matt: Ce n'est pas un type de bouton intégré.
Rapide Hack, un peu trop tard: un bouton avant est un bouton arrière avec une transformation = échelle (-1,1) et dont la TextLabel a une transformation = échelle (-1,1).
Si vous deviez utiliser [Bouton UIBUTTONWITHTYPE: 101]; Comment allez-vous changer de "TintColor"?
@kennytm Comment le faire à Swift?
J'ai battu avec plusieurs approches sur celui-ci et finalement compris à l'aide de toutes les réponses de plusieurs sources. Il y a quelques astuces; Cet extrait montrant tout (je créais un Remarque: il s'avère que si vous essayez de définir la cible et l'action directement sur l'élément du bouton après avoir attribué une vue personnalisée à l'aide d'un personnalisé code>, mais vous pouvez l'adapter facilement pour tout
uibarbuttonitem code>):
uibutton code> qu'il ne faudra pas - vous devez définir la cible et l'action Sur le bouton lui-même - apparemment, le
NAVBAR code> utilise le bouton fourni Verbatim. P>
C'est l'image que j'utilisais sur le noir opaque NAVBAR code> (Vous pouvez également utiliser quelque chose, évidemment): http://raretiger.com/images/forwardbutton.png a> grève> p> p>
Vous pouvez télécharger, compatible Retina compatible, images transparentes ici: [link] . com / actifs / docs / arrow-buttons.zip [/ link] La flèche arrière a une carte gauche de 15, l'avant de 5 (à la taille normale des boutons.)
Vous avez une fuite de mémoire où vous allouez uibarbuttonitem code> 'retenir +1' puis l'affectant à la propriété
droitebarbuttonitem code> "retenir +1". Ce qui signifie que Uibarbuttonitem aura maintenant une retenue compte de 2 et ne sera jamais libéré. Vous devez avoir une autorelease uibarbuttonitem:
self.navigentitem.rightbarbuttonitem = [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[UIBARBUTTONITEM ALLOC] INITWITHCUSTOMVIEW: Forwardbutton] Autoréleuillet]; Code>
Continuer sur @plamen Dragozov's Isson: J'ai remarqué que si vous quittez l'UIBUTTON, cela déclencherait un ajustement de la photo lorsqu'il est touché et c'est tout à fait le contraire à un bouton de navigation normal. Donc, ce que j'ai fait était de décocher "Ajuste en surbrillance de l'image" et cela fonctionne comme un charme. P>
J'espère que cela aide les débutants comme moi. P>
Solution plus élégante:
UIBarButtonItem * backButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Title" style:UIBarButtonItemStylePlain target:self action:@selector(back:)]; [backButtonItem setBackgroundImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; self.navigationItem.leftBarButtonItem = backButtonItem;
Mon problème renouait le bouton arrière qui apparaît sur le contrôleur d'affichage poussé. J'ai trouvé une solution de contournement sale et si vous ignorez le problème d'animation non idéal, vous obtiendrez un bouton de retour avec le titre souhaité.
L'astuce consiste à modifier le titre de la première VC dans (Inutile de dire, par défaut, s'il n'y a pas de dans la VC où vous appuyez sur votre VC actuel, faites P> ViewWilldisappear Code> et ré-réglez-le du cours dans
ViewWillappappear Code> P>
gauchebarbuttonitem code> SET,
UINAVIGATIONCONTROLLER CODE> affichera un bouton arrière avec le titre de la VC qui a poussé le VC actuel) P>
-(void) viewWillDisappear:(BOOL) animated {
[super viewWillDisappear:animated];
self.title = @"Back";
}
-(void) viewWillAppear:(BOOL) animated {
[super viewWillAppear:animated];
self.title = @"Original Title";
}