objective c - guidelines - ¿UIButton de iOS con UITextAlignmentLeft sigue centrando el texto?
menu ios (6)
Problema:
Después de establecer el titleEdgeInset
y UITextAlignmentLeft
un botón, el título del botón sigue centrado, no alineado a la izquierda.
Detalles:
Tengo un botón de 200 píxeles de ancho con un fondo personalizado con una imagen a la izquierda. Como no quiero que el título del botón cubra la imagen, inserto el título con titleEdgeInset=UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);
. Esto debería hacer que la posición x de la etiqueta del título comience en 45px y termine en 200px. También quiero que el título del botón esté alineado a la izquierda con la imagen, por lo que también configuro textAlignment = UITextAlignmentLeft
. Sin embargo, el texto del título aún está centrado entre 45px y 200px, no alineado a la izquierda.
¿Por qué?
Aquí está el código relevante:
button.titleEdgeInsets = UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);
button.titleLabel.textAlignment = UITextAlignmentLeft;
[button setTitle:@"X"];
Mi código de prueba:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(20, 20, 200, 72);
UIImage *image = [UIImage imageNamed:@"rob.png"];
[button setImage:image forState:UIControlStateNormal];
button.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
[button setTitle:@"Hello" forState:UIControlStateNormal];
button.titleEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[self.view addSubview:button];
Tenga en cuenta que configuro button.contentHorizontalAlignment
, no button.titleLabel.textAlignment
. Mi resultado:
Ponga un color de fondo en titleLabel. Apuesto a que está dimensionado para ajustarse, por lo que la alineación del texto no importará. Es solo el tiempo que debe ser. Lo que necesita corregir es la posición de la etiqueta en sí. Es posible que deba extender el UIButton y anular el diseño de las visitas para hacerlo bien. Nunca he visto un botón con nada más que una etiqueta centrada.
Establezca la propiedad contentHorizontalAlignment para un botón:
yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
establece la propiedad contentHorizontalAlignment para el botón, funcionará.
YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
Simplemente anule el setter del botón y trate de establecer la propiedad contentHorizontalAlignment en el setter:
-(UIButton *)yourButton {
[_yourButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
return _yourButton;
}
Swift 3
Establecer la propiedad contentHorizontalAlignment hacer el trabajo. Gracias
yourButton.contentHorizontalAlignment = .left