Je mettais une étiquette sur un UIToolbar (par cette astuce: Ajouter un Uilabel à un uitoolbar ). P>
Mais la barre d'outils a un bouton sur le côté gauche et si des espaces flexibles jettent l'étiquette du centre, ce qui est là où j'aimerais que ce soit. Puis-je centrer en quelque sorte cette barre d'outils afin qu'elle reste centrée dans la barre d'outils? P>
(déjà essayé d'équilibrer le bouton avec un espace fixe factice, pas de dés.) p>
merci! p>
5 Réponses :
La manière la plus simple serait de mettre l'étiquette au-dessus de la barre, de sa vue parent et de le justifier là-bas. P>
Merci autre-ben, c'était mon plan B. :)
La méthode de l'ESICS est supérieure et plus facile à mettre en œuvre.
La méthode de l'ESICS est "statique" et ne fonctionne pas lorsque vous changez d'orientation
Ajoutez un élément d'espace flexible à gauche et à droite de votre article centre, comme vous l'avez fait. Ajoutez ensuite un élément d'espace fixe à la fin et réglez la largeur sur la largeur de la touche gauche - environ 28 pixels.
Cela suppose que la police système ne changera jamais (il a plusieurs fois) et l'utilisateur ne définira jamais une police de tailles différente. Il ignore également les localisations du titre de votre bouton étant différentes largeurs.
Pour centrer un texte / titre sur une barre d'outils Vous pouvez utiliser un simple uilabel code> comme voir ci-dessous:
UILabel *labelTitle = [[UILabel alloc] init];
labelTitle.font =[UIFont fontWithName:@"Helvetica-Bold" size:18];
labelTitle.backgroundColor = [UIColor clearColor];
labelTitle.textAlignment = UITextAlignmentCenter;
labelTitle.userInteractionEnabled = NO;
labelTitle.text = @"Your Title";
[labelTitle sizeToFit];
CGRect labelTitleFrame = labelTitle.frame;
labelTitleFrame.size.width = self.toolbar.bounds.size.width;
labelTitleFrame.origin.y = (self.toolbar.bounds.size.height - labelTitleFrame.size.height) / 2;
labelTitle.frame = labelTitleFrame;
labelTitle.autoresizingMask = UIViewAutoresizingFlexibleWidth;
// Just add UILabel like UIToolBar's subview
[self.toolbar addSubview:labelTitle];
[labelTitle release];
labelTitle = nil;
Cette méthode fonctionne correctement lorsque vous changez d'orientation et quand il y a des boutons de barre gauche ou droite
Oui, nous pouvons centrer une partie de la barre d'outils, il suffit de mettre deux espace flexible dans la barre d'outils comme:
Si vous n'utilisez pas d'espaces flexibles ou fixes, vous pouvez modifier la distribution Uistackbar interne UistackView comme ci-dessous. Notez que vous devez appeler Toolbar.centeritemshorizontalement () Code> dans votre contrôleur d'affichage
ViewDidLayouTouSubviews () Code> Méthode.
extension UIView {
func allSubviews() -> [UIView] {
var _allSubviews: [UIView] = []
for subview in self.subviews {
_allSubviews += subview.allSubviews()
_allSubviews.append(subview)
}
return _allSubviews
}
}
extension UIToolbar {
func centerItemsHorizontally() {
allSubviews().forEach { subview in
if let stackView = subview as? UIStackView {
stackView.distribution = .fillEqually
}
}
}
}