web-dev-qa-db-fra.com

Comment aligner le texte UIButton au centre? Utiliser IB

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
enter image description here

Mais je veux comme celui-ci
enter image description here

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

133

Solution1

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.

enter image description here

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

enter image description here

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)

  1. Sous-classe UIButton pour rendre le bouton configurable:

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}
    
  2. Attribuez cette sous-classe désignable aux boutons que vous modifiez:

Showing how to change the class of the button using Interface Builder

  1. Si vous le faites bien, vous verrez la mise à jour visuelle dans IB lorsque l'état de Designables est "À jour" (ce qui peut prendre plusieurs secondes):

Comparing the designable and default button in Interface Builder



Solution2

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


Solution3

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

enter image description here

83

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
183
RGML

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): enter image description here

103
Joetjah

Pour UIButton, vous devez utiliser: -

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
26
Sirji

Pour iOS 8 et Swift

btn.titleLabel.textAlignment = NSTextAlignment.Center

ou

btn.titleLabel.textAlignment = .Center

16
Eduardo Fiorezi

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.

12
tyler53

Pour Swift 4, xcode 9

myButton.contentHorizontalAlignment = .center
9
Shan Ye

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;
7
user1862723

UITextAlignmentCenter est obsolète dans iOS6

Au lieu de cela, vous pouvez utiliser ce code:

btn.titleLabel.textAlignment=NSTextAlinmentCenter;

4
user2223924

Pour Swift 3.0

btn.titleLabel?.textAlignment = .center
3

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.

3
Alexander Danilov

Essayez comme ça:

yourButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
2
Bobby

Pour Swift 4:

@IBAction func myButton(sender: AnyObject) {
    sender.titleLabel??.textAlignment = NSTextAlignment.center
    sender.setTitle("Some centered String", for:UIControlState.normal)
}
2
Grzegorz R. Kulesza

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'.

1
Mustafa Karakuş

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];
1
btmanikandan