web-dev-qa-db-fra.com

Comment définir le titre de UIButton comme alignement à gauche?

J'ai besoin d'afficher l'adresse email du côté gauche d'un UIButton, mais elle est positionnée au centre.

Est-il possible de définir l'alignement sur le côté gauche d'un UIButton?

Ceci est mon code actuel:

UIButton* emailBtn = [[UIButton alloc] initWithFrame:CGRectMake(5,30,250,height+15)];
emailBtn.backgroundColor = [UIColor clearColor];
[emailBtn setTitle:obj2.customerEmail forState:UIControlStateNormal];
emailBtn.titleLabel.font = [UIFont systemFontOfSize:12.5];
[emailBtn setTitleColor:[[[UIColor alloc]initWithRed:0.121 green:0.472 blue:0.823 alpha:1]autorelease] forState:UIControlStateNormal];
[emailBtn addTarget:self action:@selector(emailAction:) forControlEvents:UIControlEventTouchUpInside];
[elementView addSubview:emailBtn];
[emailBtn release];
453
Madan Mohan

Définissez le contenuHorizontalAlignment:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Vous voudrez peut-être aussi ajuster le contenu inséré à gauche, sinon le texte touchera le bord gauche:

emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
1525
user121301

Vous pouvez également utiliser le générateur d'interface si vous ne souhaitez pas effectuer les ajustements dans le code. Ici je suis parti aligner le texte et l'indenter aussi:

UIButton in IB

N'oubliez pas que vous pouvez également aligner une image dans le bouton.

enter image description here

117
n8tr

Dans Swift 3+:

button.contentHorizontalAlignment = .left
32
Vincent
UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
13
bhavik

Swift 4 +

button.contentHorizontalAlignment = .left
button.contentVerticalAlignment = .top
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
11
Zaid Pathan

Utiliser emailBtn.titleEdgeInsets vaut mieux que contentEdgeInsets si vous ne souhaitez pas modifier la position du contenu dans le bouton.

9
Gabriel
8
emkaka

dans xcode 8.2.1 dans le constructeur d’interface, il passe à: enter image description here

6
dang

Il y a une petite erreur dans le code de @DyingCactus. Voici la bonne solution pour ajouter un UILabel à un UIButton afin d’aligner le texte du bouton afin de mieux contrôler le bouton 'titre':

NSString *myLabelText = @"Hello World";
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];

// position in the parent view and set the size of the button
myButton.frame = CGRectMake(myX, myY, myWidth, myHeight); 

CGRect myButtonRect = myButton.bounds;
UILabel *myLabel = [[UILabel alloc] initWithFrame: myButtonRect];   
myLabel.text = myLabelText;
myLabel.backgroundColor = [UIColor clearColor];
myLabel.textColor = [UIColor redColor]; 
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];   
myLabel.textAlignment = UITextAlignmentLeft;

[myButton addSubview:myLabel];
[myLabel release];

J'espère que cela t'aides....

Al

4
Al-Noor Ladhani

Pour Swift 2.0:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

Cela peut aider si quelqu'un en a besoin.

2
Suraj Sonawane

Dans Swift 5. et Xcode 10.2

Vous avez deux façons d'approcher

1) Approche directe

btn.contentHorizontalAlignment = .left

2) SharedClass exemple (écrivez une fois et utilisez tous les articles)

Ceci est votre classe partagée (vous accédez ainsi à toutes les propriétés des composants).

import UIKit

class SharedClass: NSObject {

    static let sharedInstance = SharedClass()

    private override init() {

    }
}

//UIButton extension
extension UIButton {
    func btnProperties() {
        contentHorizontalAlignment = .left
    }
}

Dans votre ViewController appelez comme ceci

button.btnProperties()//This is your button
1
iOS

Essayer

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
0
Gev