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
}