Igual divide el ancho de dos botones con el layout automático

  • Botón 2 con restricción de ancho igual
  • Mi requisito es cuando ocultar el button1 (Orden) refleja el ancho del button2 (Reserva) igual al ancho (button1 + button2).
  • He aplicado _button1widthconstrain.constant = 0, pero no funciona.

Por favor, haga la ayuda necesaria. introduzca la descripción de la imagen aquí

Supongo que ahora tienes restricciones como esta (1):

H: | – (0) – [order] – (0) – [reservas] – (0) -], order.width = reservations.width

Debería crear restricciones adicionales como esta (2):

H: | [order] [restricción] |

H: | [restricción] [reservas] |

, donde la restricción está entre el button y el borde respectivo de supervisión y tiene constante = 0. Entonces debe establecer su prioridad a less de las restricciones principales (1) (por ejemplo, 990).

En este caso, cuando oculta el button, nuestras restricciones adicionales se activan y hacen que el button ocupe todo el ancho.

Puede consultar a continuación github example.it lo ayudará. https://github.com/jrturton/UIView-Autolayout

Si entendí correctamente, lo que quiere hacer es que cuando oculte el button 1 (Orden), el button 2 (Reservas) debería expandirse y su ancho final debería ser el button (original) 1 + button 2, ¿es correcto?

Si ese es el caso, puede hacer lo siguiente:

  1. Agregue una vista UIV que incluya el button 1 y el button2. Establezca las restricciones en esa UIView para que termine con la altura que desea para sus botones, con un ancho igual al button1 + button2 (probablemente al establecer las restricciones principales y posteriores a su supervisión) y con la position vertical que desea para sus botones .
  2. Para el button 1, establezca la restricción de ancho, espacio superior e inferior a la vista de supervisión en 0 (o la altura igual a la vista de supervisión + centro verticalmente en contenedor), y el espacio de guía a la vista de contenedor a 0.
  3. Para el button2, establezca el espacio horizontal entre el button 1 en 0, el espacio superior e inferior en la vista de supervisión a 0 (o la altura igual a la vista de supervisión + el centro verticalmente en el contenedor) y el espacio posterior a la vista de supervisión a 0 también. No establezca una restricción de ancho para el button2.

Con ese set de restricciones, al cambiar la constante de la restricción de ancho del button 1 a 0, el button 2 debería expandirse al tamaño deseado.

Descarga los files en github usando el siguiente enlace

https://github.com/damienromito/UIView-UpdateAutoLayoutConstraints

#import "UIView+UpdateAutoLayoutConstraints.h" 

Tome 2 NSLayoutConstraints como a continuación

 IBOutlet NSLayoutConstraint *orderHeightCons; IBOutlet NSLayoutConstraint *reserHeightCons; IBOutlet UIButton orderBtn,reservationBtn; //Then connect at IB both Constraint & Buttons. Use Below Code For Hiding the Order Button & Modifying the Width for Reservation Button orderBtn.hidden=YES; //Hide Order Button..change value as per ur button height [orderBtn setConstraintConstant:0 forAttribute:NSLayoutAttributeHeight]; //if constraint doesn't exist, it will be created..change value as per ur button width [orderBtn setConstraintConstant:0 forAttribute:NSLayoutAttributeWidth]; //you can use tools to hide [orderBtn hideByHeight:YES]; //Modify Reservation Button..change value as per ur button height [reservationBtn setConstraintConstant:100 forAttribute:NSLayoutAttributeHeight]; //if constraint doesn't exist, it will be created..change value as per ur button width..(button1+button2) height value [reservationBtn setConstraintConstant:200 forAttribute:NSLayoutAttributeWidth]; [reservationBtn hideByHeight:NO]; 

Espero que te sea útil …