Je ne peux pas définir le titre de UIButton en utilisant IB comme centre. Mon titre est multi ligne.
Il donne comme celui-ci
Mais je veux comme celui-ci
J'ai donné de la place à cela, mais je ne veux pas faire ça. Comme il n’est pas aligné exactement dans certains cas et que je sais qu’une propriété d’UILabel permet de définir l’alignement, mais je ne veux pas écrire de code pour cela .. je veux juste tout définir à partir de IB.
Merci
Vous pouvez définir le chemin clé dans le storyboard
Définissez le texte sur votre titre multiligne, par exemple. hello
⌥ + ↵ multiline
Vous devez appuyer sur ⌥ + ↵ pour déplacer le texte à la ligne suivante.
Ajoutez ensuite le chemin de clé
titleLabel.textAlignment
comme Number
et la valeur 1
, 1
signifie NSTextAlignmentCenter
titleLabel.numberOfLines
comme Number
et la valeur 0
, 0
signifie un nombre quelconque de lignes
Ceci ne sera pas reflété sur IB/Xcode, mais sera au centre au moment de l'exécution (appareil/simulateur)
Si vous souhaitez voir les modifications sur Xcode, vous devez procéder comme suit: (n'oubliez pas que vous pouvez ignorer ces étapes)
Sous-classe UIButton pour rendre le bouton configurable:
import UIKit
@IBDesignable class UIDesignableButton: UIButton {}
Attribuez cette sous-classe désignable aux boutons que vous modifiez:
Si vous voulez écrire le code, faites le long processus
1.Créez IBOutlet
pour le bouton
2.Write code in viewDidLoad
btn.titleLabel.textAlignment = .Center
btn.titleLabel.numberOfLines = 0
Dans la nouvelle version de xcode (le mien est xcode 6.1), nous avons le titre de propriété attribué
Sélectionnez Attributed
puis sélectionnez le texte et appuyez sur l'option centrale au-dessous
P.S. Le texte ne venait pas en multiligne pour cela je dois définir le
btn.titleLabel.numberOfLines = 0
Cela fera exactement ce que vous attendiez:
Objective-C:
[myButton.titleLabel setTextAlignment:UITextAlignmentCenter];
Pour iOS 6 ou supérieur, c'est
[myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];
comme expliqué dans réponse de tyler5
Rapide:
myButton.titleLabel?.textAlignment = NSTextAlignment.Center
Utilisez la ligne:
myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
Cela devrait centrer le contenu (horizontalement).
Et si vous souhaitez également définir le texte intérieur de l'étiquette au centre, utilisez:
[labelOne setTextAlignment:UITextAlignmentCenter];
Si vous voulez utiliser IB, j'ai un petit exemple ici qui est lié à XCode 4 mais devrait fournir suffisamment de détails (attention, en plus de cet écran de propriétés, il montre l'onglet de propriété. Vous pouvez trouver les mêmes onglets dans XCode 3.x):
Pour UIButton, vous devez utiliser: -
[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
Pour iOS 8 et Swift
btn.titleLabel.textAlignment = NSTextAlignment.Center
ou
btn.titleLabel.textAlignment = .Center
Pour ceux d'entre vous qui utilisent maintenant iOS 6 ou une version ultérieure, UITextAlignmentCenter est obsolète. C'est maintenant NSTextAlignmentCenter
EXEMPLE: mylabel.textAlignment = NSTextAlignmentCenter;
Fonctionne parfaitement.
Pour Swift 4, xcode 9
myButton.contentHorizontalAlignment = .center
En supposant que btn se réfère à un UIButton, pour modifier une légende multiligne afin qu'elle soit centrée horizontalement, vous pouvez utiliser la déclaration suivante dans iOS 6 ou version ultérieure:
self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;
UITextAlignmentCenter
est obsolète dans iOS6
Au lieu de cela, vous pouvez utiliser ce code:
btn.titleLabel.textAlignment=NSTextAlinmentCenter;
Pour Swift 3.0
btn.titleLabel?.textAlignment = .center
En fait, vous pouvez le faire dans le constructeur d'interface.
Vous devez définir le titre sur "Attribué", puis choisir l'alignement au centre.
Essayez comme ça:
yourButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
Pour Swift 4:
@IBAction func myButton(sender: AnyObject) {
sender.titleLabel??.textAlignment = NSTextAlignment.center
sender.setTitle("Some centered String", for:UIControlState.normal)
}
Vous pouvez le faire à partir du storyboard. Sélectionnez votre bouton. Définissez le saut de ligne 'Retour à la ligne', définissez votre titre 'Ordinaire' sur 'Attribué'. Sélectionnez "Centrer l'alignement". Cette partie est importante => Cliquez sur le bouton ... (Plus). Et sélectionnez le mode de changement de ligne sur 'Caractère Wrap'.
UIButton ne supportera pas setTextAlignment. Donc, vous devez aller avec setContentHorizontalAlignment pour l'alignement du texte du bouton
Pour votre référence
[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];