UITableView Auto-Layout Flexible Height

Tengo el siguiente layout. introduzca la descripción de la imagen aquí

Estoy usando AutoLayout para hacer que todo sea flexible. En este layout, tengo una UIView que es gris en color como se muestra en la image y una UITableView debajo de UIView . Algunas veces tengo que mostrar esta UIView y algunas veces tengo que esconder esta UIView gris.

Mi problema es que cuando UIView , UITableView no está arreglando su altura. No quiero código duro en el file .m. ¿Es posible que AutoLayout se encargue de este problema? Tengo estas restricciones como se muestra a continuación. Me falta alguna restricción.

introduzca la descripción de la imagen aquí

Cuando bash cambiar la altura UIView , UITableView no se mueve hacia arriba y muestra algunas restricciones anaranjadas como se muestra en la image. introduzca la descripción de la imagen aquí

Las contraintas se ven bien. Todo lo que tiene que hacer para mostrar UIView ocultar la UIView gris es cambiar la constante de restricción de altura. Para hacer esto, cree un IBOutlet en su controller para la restricción (hágalo de la misma manera que lo haría con un UIView IBOutlet ), y cuando quiera ocultar la vista gris, establezca la propiedad constant de la restricción en 0 .

p.ej.

 @interface MyViewController @property (weak, nonatomic) IBOutlet NSLayoutConstraint *greyViewHeightConstraint; @end 

y cuando quiere ocultar la vista:

 self.greyViewHeightConstraint.constant = 0; 

Para volver a mostrar la vista, tendría que save el valor constante "pnetworkingeterminado" después de cargar el guión gráfico (como en la viewDidLoad por ejemplo) y establecer self.greyViewHeightConstraint.constant a este valor guardado.

Tenga en count también que estos cambios de restricción pueden ser animados .


La "restricción naranja" que está viendo en Interface Builder es normal: indica que el marco de vista no coincide con las restricciones que estableció. A continuación, puede actualizar el cuadro para respetar las restricciones o actualizar las restricciones para que coincidan con el cuadro.