sketch priority español ios storyboard constraints autolayout

ios - priority - constraints xcode



Diseño automático para dimensionar de forma dinámica el ancho de uilabel (3)

Así que tengo dos UILabels uno al lado del otro en Storyboard. La segunda etiqueta debe chocar contra el borde derecho de la primera (restricción final de 1), pero también necesito la primera etiqueta (la de la izquierda) para establecer su ancho igual a su tamaño de contenido a menos que alcance un ancho máximo . Visualmente:

| Etiquetar un texto | | Etiquetar dos textos |

Y necesito las siguientes restricciones:

1) La etiqueta debe cambiar el tamaño del ancho a menos que alcance un tamaño máximo.

2) La etiqueta dos siempre debe estar unida contra el borde derecho de la etiqueta uno

¿Cómo configuro esto en Storyboard?


  1. Cree el espacio horizontal de 1 punto entre las etiquetas: label1 la etiqueta2 para label1 . Elija Espaciado horizontal desde la ventana emergente. Haga doble clic en la restricción. Cambia la constante a 1.
  2. Dale a label1 un ancho máximo: selecciona label1 . Vaya a la barra de menú superior, seleccione Editor> Pin> Ancho. Haga doble clic en la restricción. Cambie la relación a <= y cambie la constante al ancho máximo.
  3. Alinear verticalmente las etiquetas: seleccione ambas etiquetas. Vaya a la barra de menú superior, seleccione Editor> Alinear> Centros verticales.
  4. Aún necesita establecer restricciones que definan cómo se posicionan sus etiquetas en su 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 diseño superior.
  5. Actualice los marcos de las etiquetas para que reflejen las restricciones anteriores: vaya a la barra de menú en la esquina inferior derecha del lienzo. Presiona el botón Tie-Fighter "Resolver problemas de diseño automático". Seleccione "Actualizar todos los cuadros ..." en la ventana emergente.

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


Por favor refiérase a las restricciones a Establecer ancho de UI y UIButton flexible;


Primero, ingrese 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 etiqueta 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];

luego la segunda etiqueta Frame será:

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