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

Centro de Texto de varias líneas en UIButton el uso de IB

  • El texto debe estar centrado de forma predeterminada. Si se va a cambiar, lo haría bajo «Control > la Alineación» que el tuyo está dispuesto a ser centrado horizontalmente y verticalmente. ¿Qué hace su UIButton actualmente?
  • Todo está justificado a la izquierda.
  • Creo que el verdadero problema es que usted está tratando de centrar un texto de varias líneas en el UIButton… voy a cambiar el título para reflejar eso.
  • Hmmm. Ok, ¿cómo puedo hacer eso?
  • Se parece a la UIButton es centrar el texto, sino que está centrado en su conjunto (es decir, el bloque de texto que se centra, no en cada línea). He intentado este en el interface builder. ¿Está usted queriendo centro de cada línea por separado?
  • Sí. No hay algunas de ellas construidas en el método para hacer esto? Parece que no se puede hacer en la PUNTA. No puedo ser la primera persona que tiene este problema.

InformationsquelleAutor sdknewbie | 2012-01-27

7 Comentarios

  1. 54

    Que no se puede establecer el texto que se centra en su punta. Pero usted puede cambiar la alineación en el código:

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        self.myButton.titleLabel.textAlignment = UITextAlignmentCenter;
    }
    • +1 @sdknewbie ¿has probado esto? Esta es una interesante respuesta como él en la configuración de la alineación de texto de la etiqueta en el botón. Si esta arreglado las cosas, por favor, marque la respuesta. Si no, deja un comentario.
    • Esta idea se ve interesante, pero no funcionó. Tengo un SIGABRT de error. Aquí está el registro de entrada. «no reconocido selector enviado a la instancia.» Estoy bastante seguro de que he conectado el botón de forma correcta ya que la aplicación se compila, pero se bloquea cuando yo seleccione la vista con el botón … pero soy novato!
    • El registro de entrada también dijo que tanto el selector que fue reconocida, y la clase de la instancia que lo recibió. Si usted publicar esa información también nos puede ser más útil.
    • Configuración de textAlignment = UITextAligmentCenter funciona en mi proyecto de prueba.
    • Yo soy el novato … tuve otro error. Esto funciona como un encanto! Rob es genial! Me siento muy honrado de que usted me honren con su conocimiento. Gracias!
    • Para su INFORMACIÓN, esto funciona para un sencillo botón de título, pero no parece funcionar para un Atribuye el título.
    • como de iOS 7, cuando me puse de ajuste de palabra, si no hacer de carácter envoltura..
    • UITextAlignmentCenter está en desuso en iOS6, el mejor uso self.myButton.titleLabel.textAlignment = NSTextAlignmentCenter;
    • funciona como magia…
    • para iOS8 (y rápido) que usted tiene que hacer uso NSTextAlignment.Center. Si usted hace su propia clase de botón usted puede hacer esto en su init/constructor: self.titleLabel?.textAlignment = NSTextAlignment.Center

  2. 13

    Sé que esto es una vieja pregunta, pero me encontré con él en mi propio intento de centro de la multi-línea de texto de un UIButton en IB. Lo que he encontrado es que por defecto, cuando el «título» está ajustado en «simple» y «salto de línea» se establece en «word wrap» la línea más larga del texto del título se centra y las otras líneas son justificados a la izquierda de esta línea (similar a la OP captura de pantalla).

    Con el fin de tener todas las líneas correctamente centrada, «title» debe ser cambiado a «atribuida.» Esto proporciona muchas más opciones para personalizar la apariencia del texto del título. El centro de cada una de las líneas de texto (ahora usted puede realmente cambiar la alineación de cada línea por separado). También asegúrese de ajustar «los saltos de línea» a «word wrap» en «más…» por encima del texto. Parece que hay un error con cómo esta línea de ruptura opción se comporta, al menos en Xcode 4.5 en este momento, porque el texto en el botón en IB ser incorrectos, truncando todo excepto la primera línea. Parece que el «word wrap» y truncar las opciones son interpretados hacia atrás en el IB, pero si ejecutas la aplicación se comporta correctamente en el simulador.

  3. 9

    Realmente puede hacerlo en el interface builder.

    Acaba de establecer el Título de «Atribuida» y, a continuación, elija el centro de la alineación.

    • esta debe ser la respuesta correcta
    • entonces no se ajusta, wth?
    • Para envolver usted necesita para establecer el Carácter de Salto de Línea para Envolver o ajuste.
    • Esta es realmente la mejor solución porque es el más simple y conveniente sin ningún tipo de código, aun en tiempo de ejecución atributos
    • Esta es la respuesta correcta, al menos en 2016 y con mejores versiones de Xcode que se extienden IB apoyo.
  4. 8

    Puede establecer el centro de texto de varias líneas en UIButton a través de storyboard.

    Esta es la forma de hacer que el texto tiene dos o más líneas.

    Establezca la siguiente clave de la Ruta de acceso a la

    Identidad Inspector –> definido por el Usuario en tiempo de ejecución atributos –> agregar nuevo valor de la clave par con los de abajo

    titleLabel.textAlignment - NSNumber - 1

    y

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

    Se parecerá a esto:

    Centro de Texto de varias líneas en UIButton el uso de IB

    Tenga en cuenta que (2016) lamentablemente no muestran en realidad los dos o más líneas de texto en el Guión gráfico (sólo se ve la primera), pero que funciona a la perfección cuando se ejecuta en el simulador o dispositivo.

    • funcionó pero yo escribo como «titleLabel.numberOfLines».No sé si funciona sin letras mayúsculas. Gracias.
    • la respuesta correcta
  5. 2

    No todas las opciones se realiza a través de la Interfaz del Generador por lo tanto, usted debe hacer algunas de ellas, por la codificación, y generalmente lo hacemos dentro de la función viewDidLoad.

    Para centrar el texto dentro de un botón mediante el código puede utilizar el siguiente:

    button1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

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

    button1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

    Pero esto va a tomar el texto demasiado a la izquierda y usted puede ser que desee tener algo de espacio antes de que mantener la alineación a la izquierda, por lo que añadir un recuadro después de la alineación de código como sigue:

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

    En este caso estamos empujando el texto del eje Y por 10 puntos. Yo digo aquí los puntos no se píxeles porque como saben Apple utiliza los puntos de técnica para medir las distancias a ser capaz de adaptarse fácilmente entre la normal de la pantalla y de la pantalla retina (donde retina es 2 veces la normal).

    • -1 ¿cómo ayuda el hombre le pregunta a la pregunta (o alguien más)?
    • La pregunta estaba preguntando acerca de Interface Builder, no se trata de código, y esta respuesta le sirve a este objetivo diciendo que no se puede hacer. Por otra parte, esta respuesta da una idea acerca de dónde hacer la codificación (dentro de viewDidLoad). Si el que pidió no sabía la codificación de la forma en la que esperamos ver en él al comentar sobre esta respuesta y después de eso vamos a responder a su nuevo comentario por el código. Con esto quiero ver esta respuesta ayuda al chico a hacer la pregunta, y gracias por tu comentario.
    • Esa es una respuesta justa, sin embargo no puedo cambiar mi voto a menos que usted cambie su respuesta (forzado restricción de MODO que después de tantas horas de paso – que sabía). Mientras me hubiera gustado haber visto una solución alternativa, es verdad que el usuario no solicite.
    • Ediciones añadido para mostrar una codificación de la solución.
  6. 2

    Para IB establece el Título de «Atribuida» y seleccione centro de la alineación (como Alexander Danilov sugerido)

    Pero si quieres hacerlo en el código mediante Swift 4:

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

    Yo no lo he probado aún, pero creo que una manera de hacerlo podría ser crear un CGRect en la parte superior de tu botón, a continuación, utilizarlo como un marco, crear una etiqueta y, a continuación, usted puede jugar con la etiqueta, establezca el textAlignment de la propiedad a ser UITextAlignmentCenter, y establecer el color de fondo para ser claros.

    Esto funciona con uitableview, pero no sé si va a trabajar para el botón. Espero que esto ayude.

Dejar respuesta

Please enter your comment!
Please enter your name here