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

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

Y a-t-il un moyen 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]; 

Définir le contentHorizontalAlignment:

 emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 

Vous pouvez également ajuster le contenu restant, sinon le texte touchera la bordure gauche:

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

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 aussi le mettre en retrait:

UIButton dans IB

N’oubliez pas que vous pouvez également aligner une image sur le bouton également:

entrer la description de l'image ici

Dans Swift 3+:

 button.contentHorizontalAlignment = .left 
 UIButton *btn; btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop; btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 

Utiliser emailBtn.titleEdgeInsets est mieux que contentEdgeInsets , au cas où vous ne voulez pas changer la position du contenu dans le bouton.

Ici est expliqué comment le faire et pourquoi cela fonctionne: http://cocoathings.blogspot.com/2013/03/how-to-make-uibutton-text-left-or-right.html

Swift 4+

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

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

 NSSsortingng *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

dans xcode 8.2.1 dans le générateur d’interface, il se déplace à: entrer la description de l'image ici

Pour Swift 2.0:

 emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left 

Cela peut aider si nécessaire.