Siento que es un paradigma bastante común para mostrar / ocultar UIViews
, con mayor frecuencia UILabels
, dependiendo de la lógica empresarial. Mi pregunta es, ¿cuál es la mejor manera de usar AutoLayout para responder a vistas ocultas como si su marco fuera 0x0? Aquí hay un ejemplo de una lista dinámica de 1-3 características.
En este momento tengo un espacio superior de 10 píxeles desde el botón hasta la última etiqueta, que obviamente no se deslizará hacia arriba cuando la etiqueta esté oculta. A partir de ahora, creé una salida para esta restricción y modifiqué la constante dependiendo de cuántas etiquetas estoy mostrando. Obviamente, esto es un poco extraño ya que estoy usando valores constantes negativos para presionar el botón hacia arriba sobre los marcos ocultos. También es malo porque no se limita a los elementos de diseño reales, solo cálculos estáticos furtivos basados en alturas conocidas / relleno de otros elementos, y obviamente lucha contra lo que fue diseñado para AutoLayout.
Obviamente, podría crear nuevas restricciones dependiendo de mis etiquetas dinámicas, pero eso es una gran cantidad de microgestión y mucha verbosidad para tratar de colapsar algunos espacios en blanco. ¿Hay mejores enfoques? ¿Cambiar el tamaño de cuadro 0,0 y dejar que AutoLayout haga lo suyo sin manipular las restricciones? ¿Eliminar vistas por completo?
Honestamente, sin embargo, solo modificar la constante del contexto de la vista oculta requiere una sola línea de código con un cálculo simple. Recreando nuevas restricciones con constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:
parece tan pesado.
Editar febrero de 2018 : ver la respuesta de Ben con UIStackView
s