Modifier la largeur d'une UIBarButtonItem dans un UINavigationBar
Je suis entrain de créer un UIBarButtonItem et de l'ajouter à ma barre de navigation comme suit:
(void)viewDidLoad {
...
//Add the refresh button to the navigation bar
UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeCustom];
[refreshButton setFrame:CGRectMake(0,0,30,30)];
[refreshButton setImage:[UIImage imageNamed:@"G_refresh_icon.png"] forState:UIControlStateNormal];
[refreshButton addTarget:self action:@selector(refreshData) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *refreshBarButton = [[[UIBarButtonItem alloc] initWithCustomView:refreshButton] autorelease];
self.navigationItem.leftBarButtonItem = refreshBarButton;
}
Il semble correct quand je le lance, mais je peux sélectionner le bouton de la barre d'élément en appuyant sur la barre de navigation de n'importe où à partir de x = 0 à environ 100. Comment puis-je ajuster la zone sélectionnable pour une largeur de 30 px?
Je crains que je ne pense pas qu'il y est une façon d'ajuster la zone sélectionnable. Une question cependant, pourquoi voudriez-vous que la largeur à 30 px? iOS Human Interface de Directive stipule que le confort d'une taille minimale de tappable éléments de l'INTERFACE utilisateur est de 44 x 44 points. developer.apple.com/library/ios/#documentation/UserExperience/...
Hmm, ok merci pour le lien vers les lignes directrices. Il semble un peu étrange que la zone sélectionnable est donc large.
peut-on modifier la largeur de
Hmm, ok merci pour le lien vers les lignes directrices. Il semble un peu étrange que la zone sélectionnable est donc large.
peut-on modifier la largeur de
barbuttonitem
dans le storyboard?OriginalL'auteur Darren | 2012-06-11
Vous devez vous connecter pour publier un commentaire.
Une approche possible est la création d'un
UIBarButtonItem
en appelantinitWithCustomView:
. Ce n'est pas l'idéal qu'on n'a pas "choisi" les états hors de la boîte ET vous devez composite de votre bordé de fond (si vous voulez que l'oeil) avec votre image de bouton, mais avec plus de spécifier directement une image pour votre élément de barre d'outils. Si vous êtes à l'aide du texte de votre titre au lieu d'images, vous pouvez encore avoir besoin d'ajouter une image d'arrière-plan comme une sous-vue. De toute façon, je vais avoir le même problème dès maintenant et que ce code fonctionne pour moi:Droit maintenant, c'est la seule façon que je sais de la restriction de l'auto-dimensionnement de la
UIBarButtonItem
s ajouté à laUINavigationController
'snavigationItem
.Ou essayez de Maggie solution, qui est plus complet que le mien.
UIButton
comme customView, et pasUIImageView
cette solution ne fonctionnera pas comme il n'a pas de bouton d'actions à tous. Utilisation
UIButton
à la place.OriginalL'auteur Aaron
Depuis iOS 11, cadre de
customView
et pasUIBarButtonItem
ne fonctionne pas (comme suggéré dans accepté de répondre à). Il semble que l'ajout de mise en page automatique pourUIBarButtonItem
remplace l'ensemble du cadre.Ce post m'a donné l'idée:
Également noter qu'il est préférable que vous utilisiez
UIButton
que votreCustomView
que vous devez compter sur elle pour déclencher l'action.Il était assez surprenant de savoir que la barre de navigation utilise la Mise en page Automatique par défaut à la place des éléments, très utile d'info ici.
Merci! Il est important de savoir que manipulatinng le cadre ne fera rien de plus
OriginalL'auteur roxanneM
Vous pouvez le faire en déposant une image pour le bouton de la barre d'élément d'interface builder et la modification de la largeur de l'affichage personnalisé avec ce code:
OriginalL'auteur odm
L'essentiel c'est de réaliser que vous modifiez l'affichage personnalisé de la largeur, plutôt que de la
UIBarButton
lui-même.Le code est donc:
Vous aurez également besoin de déclencher le changement de présentation:
Tout cela va sans dire que la mise en page est fait avec ajustement Automatique de la taille et de cadres. Des Incursions dans les barres de navigation avec Mise en page Automatique n'a donné aucun succès. Voir ma question Mise en page automatique avec UINavigationBar et UIBarButtonItem.
Désolé viens de réaliser que mon code est presque identique à @oscartzombie. Pas intentionnel! Je vais quitter cette réponse que je pense qu'il est intéressant d'ajouter la mise en page et d'autres points, en plus d'expliquer sans référence à l'Interface de Bulder ou des images en particulier.
[self.navigationController.navigationBar setNeedsLayout];
à mon avis du contrôleur de-(void)viewDidLoad
méthode.OriginalL'auteur Max MacLeod
L'approche suivante travaillé, voir le code pour modifier la largeur et la hauteur de la touche et pour ajouter un point d'action.
Note: La cible et de l'action de la UIBarButtonItem ne s'applique pas à l'affichage de l'image
OriginalL'auteur Abdullah Saeed
Aucune de ces deux solutions n'a fonctionné pour moi et je figure sur l'auto-redimensionnement chose remplace les dimensions que vous avez écrit dans le code.
après la création de bouton par UIButton façon, écrire bloc de code suivant:
OriginalL'auteur ACAkgul