Diseño automático para ajustar dinámicamente el ancho de uilabel

Así que tengo dos UILabels lado a lado en Storyboard. La segunda label debe toparse con el borde derecho de la primera (restricción de final de 1), pero también necesito la primera label (la de la izquierda) para establecer su ancho igual a su tamaño de contenido a less que scope un ancho máximo . Visualmente:


| Etiqueta un text | | Etiqueta dos texts |


Y necesito las siguientes restricciones:

1) La label debe cambiar el tamaño del ancho a less que scope un tamaño máximo.

2) La label dos siempre debe estar pegada contra el borde derecho de la label una

¿Cómo configuro esto en Storyboard?

  1. Cree el espacio horizontal de 1 punto entre las tags: controle y arrastre desde label2 a label1 . Elija Espaciado horizontal en la window emergente. Haga doble clic en la restricción. Cambia la constante a 1.
  2. Dé a label1 un ancho máximo: select label1 . Vaya a la barra de menu superior, select Editor> Pin> Ancho. Haga doble clic en la restricción. Cambie la relación a <= y cambie la constante por el ancho máximo.
  3. Alinear verticalmente las tags: select ambas tags. Vaya a la barra de menu superior, select Editor> Alinear> Centros verticales.
  4. Aún necesita establecer restricciones que definan cómo se colocan sus tags en la vista de contenedor. Te lo dejo a ti. label1 32 puntos desde el borde izquierdo de la vista raíz y 34 puntos desde la guía de layout superior.
  5. Actualice los frameworks de las tags para que reflejen las restricciones anteriores: Vaya a la barra de menu en la esquina inferior derecha del canvas. Toque el button Tie-Fighter de "Resolver problemas de layout automático". Seleccione "Actualizar todos los frameworks …" en el menu emergente.

Nota: Tenga en count que no tuve que crear restricciones para que el label1 la label1 refleje su tamaño de contenido. Las restricciones de tamaño de contenido se generan automáticamente.

introduzca la descripción de la imagen aquí

Consulte las restricciones siguientes para Establecer el ancho flexible de UIlabel y UIButton;

Establezca el ancho flexible de UIlabel y UIButton de acuerdo con el texto usando xib autolayout

Primero obtenga textSize con el siguiente código:

  CGSize textSize = { 230.0, 10000.0 }; CGSize size = [[NSString stringWithFormat:@"%@", yourLabelText] sizeWithFont:[UIFont systemFontOfSize:10] constrainedToSize:textSize lineBreakMode:NSLineBreakByWordWrapping]; 

luego configure su primer marco de label con este tamaño de contenido:

  UILabel *lblFirst = [[UILabel alloc] initWithFrame:CGRectMake(X, Y, W, size.height)]; lblFirst.lineBreakMode = YES; lblFirst.lineBreakMode = NSLineBreakByWordWrapping; lblFirst.numberOfLines =size.height; lblFirst.backgroundColor = [UIColor clearColor]; [self.view addSubview:lblFirst]; 

entonces la segunda label Frame será:

  UILabel *lblFirst = [[UILabel alloc] initWithFrame:CGRectMake(lblFollowerName.frame.size.width + lblFollowerName.frame.origin.x, Y, W, H)];