J'essaye d'ajouter une étiquette à ma barre d'outils. Le bouton fonctionne très bien, mais lorsque j'ajoute l'objet étiquette, il se bloque. Des idées?
UIBarButtonItem *setDateRangeButton = [[UIBarButtonItem alloc] initWithTitle:@"Set date range"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(setDateRangeClicked:)];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 20, 20)];
label.text = @"test";
[toolbar setItems:[NSArray arrayWithObjects:setDateRangeButton,label, nil]];
// Add the toolbar as a subview to the navigation controller.
[self.navigationController.view addSubview:toolbar];
// Reload the table view
[self.tableView reloadData];
ios
iphone
uibarbuttonitem
user8359
la source
la source
Pour ceux qui utilisent Interface Builder pour mettre en page votre
UIToolBar
, il est également possible de le faire en utilisant Interface Builder seul.Pour ajouter un
UILabel
à un,UIToolBar
vous devez ajouter unUIView
objet générique à votreUIToolBar
dans IB en faisant glisser un nouvelUIView
objet sur votreUIToolBar
.IB
créera automatiquement unUIBarButtonItem
qui sera initialisé avec votre customUIView
. Ajoutez ensuite unUILabel
àUIView
et modifiez-leUILabel
graphiquement pour correspondre à votre style préféré. Vous pouvez ensuite configurer visuellement vos entretoises fixes et / ou variables comme vous le souhaitez pour les positionner deUILabel
manière appropriée.Vous devez également définir l'arrière-plan du
UILabel
et duUIView
àclearColor
pour que leUIToolBar
s'affiche correctement sous leUILabel
.la source
J'ai trouvé la réponse de answerBot très utile, mais je pense avoir trouvé un moyen encore plus simple, dans Interface Builder:
branchez ce BarButtonItem à une propriété de votre classe (c'est dans Swift, mais serait très similaire dans Obj-C):
ajoutez une autre propriété pour l'étiquette elle-même:
dans viewDidLoad, ajoutez le code suivant pour définir les propriétés de votre étiquette et ajoutez-le en tant que customView de votre BarButtonItem
Pour mettre à jour le
UILabel
texte:Résultat :
Vous devez appeler
lastUpdateLabel.sizetoFit()
chaque fois que vous mettez à jour le texte de l'étiquettela source
UILabel* label = [[UILabel alloc] init]; label.text = @"Hello"; label.font = [UIFont systemFontOfSize:16]; [label sizeToFit]; self.barItem.customView = label;
Une des choses pour lesquelles j'utilise cette astuce est d'instancier un
UIActivityIndicatorView
par-dessusUIToolBar
, quelque chose qui autrement ne serait pas possible. Par exemple ici, j'ai unUIToolBar
avec 2UIBarButtonItem
, unFlexibleSpaceBarButtonItem
, puis un autreUIBarButtonItem
. Je veux insérer unUIActivityIndicatorView
dans l'UIToolBar
entre l'espace flexible et le dernier bouton ( à droite). Donc dans monRootViewController
je fais ce qui suit,la source
Détails
Échantillon complet
Résultat
la source
Semblable à Matt RI utilisé le constructeur d'interface. Mais je voulais en avoir 1
UIWebView
à la place afin que je puisse avoir du texte en gras et d'autres pas du texte (comme l'application de messagerie). AlorsIBOutlet
html
pour avoir un arrière-plan transparent afin que la barre d'outils brille à traversCode:
la source
Si vous souhaitez ajouter une vue dans la vue de la barre d'outils, vous pouvez essayer ceci:
la source
Essaye ça:
Remarque:
self.barItem
est unUIBarButtonItem
ajout de la bibliothèque d'objets et placé entre deux espaces flexibles.une autre façon est de supprimer la
[self.barItem setCustom:view]
ligne et de modifier les paramètres de lalabel
(largeur) afin qu'elle remplisse toute la barre d'outils et de définir l'alignement au milieu et la police par vous-même dans le code,la source