iphone ios interface-builder multiline

iphone - Centrar texto multilínea en UIButton usando IB



ios interface-builder (7)

¿Cómo centra el texto línea por línea en un UIButton usando Interface Builder? Estoy rastreando las opciones y simplemente no lo veo. Aquí está el botón:


En realidad puedes hacerlo en el constructor de interfaces.

Simplemente configure el Título en "Atribuido" y luego elija la alineación central.


No lo he probado todavía, pero creo que una forma de hacerlo podría ser crear un CGRect en la parte superior de su botón, luego usarlo como marco, crear una etiqueta y luego puede jugar con la etiqueta, establecer la La propiedad textAlignment será UITextAlignmentCenter y establece el color de fondo para que sea claro.

Esto funciona con uitableview pero no sé si funcionará para el botón. Espero que esto ayude.


No todas las opciones se realizan utilizando el Generador de Interfaz, por lo tanto, debe realizar algunas de ellas mediante codificación, y generalmente las hacemos dentro de la función viewDidLoad .

Para centrar su texto dentro de un botón por código puede usar lo siguiente:

button1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

Puede usar la misma técnica para alinear el texto en cualquier dirección, por ejemplo, a la izquierda:

button1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Pero esto llevará el texto demasiado a la izquierda y es posible que desee tener algo de espacio antes de mantener la alineación a la izquierda, así que agregue una inserción después del código de alineación de la siguiente manera:

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

En este caso, estamos empujando el texto desde el eje Y en 10 puntos. Yo digo que aquí los puntos no son píxeles porque, como saben, Apple utiliza la técnica de puntos para medir distancias para poder adaptarse fácilmente entre la pantalla normal y la pantalla retina (donde la retina es 2 veces la normal).


Para IB, establezca Título en "Atribuido" y seleccione alineación central (como sugirió Alexander Danilov )

Pero si quieres hacerlo en código usando Swift 4 :

// center button text yourButton.titleLabel?.textAlignment = .center // enable multiline if needed yourButton.titleLabel?.numberOfLines = 0


Puede configurar el texto multilínea central en UIButton a través del guión gráfico.

Así es como haces que el texto tenga dos o más líneas.

Establezca la ruta de la clave a continuación en

Identity Inspector -> atributos de tiempo de ejecución definidos por el usuario -> agregar un nuevo par de valores clave con el siguiente

titleLabel.textAlignment - NSNumber - 1

y

titleLabel.numberOfLines - NSNumber - 5 - or use "0" meaning "any number"

Se verá así:

Tenga en cuenta que (2016) desafortunadamente no muestra las dos o más líneas de texto en el Guión gráfico (solo ve la primera), pero funciona perfectamente cuando se ejecuta en un simulador o dispositivo.


Sé que esta es una pregunta antigua, pero la encontré en mi propio intento de centrar el texto de varias líneas de un UIButton en IB. Lo que encontré es que, de forma predeterminada, cuando "título" se establece en "normal" y "salto de línea" se configura en "ajuste de palabras", la línea más larga del texto del título se centra y las demás líneas se justifican a la izquierda en esta línea ( similar a la captura de pantalla del OP).

Para tener todas las líneas centradas correctamente, el "título" debe cambiarse a "atribuido". Esto proporciona muchas más opciones para personalizar la apariencia del texto del título. Centre cada una de las líneas de texto (ahora puede cambiar la alineación de cada línea individualmente). También asegúrese de establecer "saltos de línea" en "ajuste de palabras" debajo de "más ..." sobre el texto. Parece que hay un error con el comportamiento de esta opción de salto de línea, al menos en Xcode 4.5 en este momento, porque el texto en el botón en IB se verá incorrecto, truncando todo excepto la primera línea. Parece que las opciones de "ajuste de palabras" y truncado se interpretan al revés en IB, pero si ejecuta la aplicación, se comporta correctamente en el simulador.


No puede configurar el texto para que se centre en su plumilla. Pero puedes cambiar la alineación en tu código:

- (void)viewDidLoad { [super viewDidLoad]; self.myButton.titleLabel.textAlignment = UITextAlignmentCenter; }