¿Cómo puedo configurar el título de un UIButton como alineado a la izquierda?

Resuelto Madan Mohan asked hace 54 años • 14 respuestas

Necesito mostrar una dirección de correo electrónico en el lado izquierdo de un correo electrónico UIButton, pero está ubicada en el centro.

¿ Hay alguna forma de establecer la alineación en el lado izquierdo de a UIButton?

Este es mi código actual:

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];
Madan Mohan avatar Jan 01 '70 08:01 Madan Mohan
Aceptado

Establezca el contenidoHorizontalAlignment:

// Swift 
emailBtn.contentHorizontalAlignment = .left;

// Objective-C
emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Es posible que también desees ajustar el contenido insertado a la izquierda; de lo contrario, el texto tocará el borde izquierdo:

// Swift 3 and up:
emailBtn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0);

// Objective-C
emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
 avatar May 04 '2010 12:05

También puede utilizar el generador de interfaces si no desea realizar ajustes en el código. Aquí dejé alinear el texto y también sangrarlo un poco:

Botón UI en IB

No olvides que también puedes alinear una imagen en el botón:

ingrese la descripción de la imagen aquí

n8tr avatar Mar 29 '2014 00:03 n8tr

En Swift 3+:

button.contentHorizontalAlignment = .left
Vincent avatar Sep 01 '2015 06:09 Vincent

Rápido 4+

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