ios swift autolayout constraints uistackview

ios - La distribución de UIStackView se llena por igual



swift autolayout (3)

Entonces, tengo un UIStackView que contiene cuatro (4) UIView s. Si UIView uno (1) de esos UIView s, los otros tres (3) llenarán todo el espacio en el UIStackView .

MI PREGUNTA:

¿Cómo puedo agregar una altura máxima en una UIView para que no llene todo el espacio de UIStackView aunque la distribución se llene por igual? Leí algo sobre agregar una restricción, pero no puedo hacer que funcione. Estoy usando swift por cierto.

Gracias.


Elimine la restricción en el borde inferior de la vista de pila. Luego cambiará de tamaño para ajustarse a los controles visibles.


Intente cambiar la propiedad "Distribución" en el inspector de Atributos de la vista de pila a Espaciado igual. Deberia de funcionar.

O puede cambiarlo para que se llene por igual para llenar las 3 vistas restantes por igual en la vista Pila.


Si no me estoy equivocando, lo que estás enfrentando es:

Y lo que estás pidiendo es:

Bueno, si ese es tu caso, y espero que lo sea, lo logré haciendo un truco bastante simple:

PD: Supongo que agregaste las restricciones apropiadas para tu stackView.

Si su stackView no tiene una restricción de "altura" , agregue una:

Ahora, agréguelo como IBOutlet al ViewController asignado, en mi ejemplo lo llamo stackHeight :

@IBOutlet weak var stackHeight: NSLayoutConstraint!

En el caso de que desee ocultar la vista, en mi ejemplo, estoy ocultando el botón naranja colocado en IBAction asignado a sí mismo, al tocarlo debe estar oculto, debe obtener la altura de la vista que desea para ocultar y restar de stackHeight.constant :

@IBAction func orangeTapped(_ sender: AnyObject) { orange.isHidden = true // here we go: stackHeight.constant = stackHeight.constant - orange.frame.size.height }