vertical how buttons ios swift uistackview

ios - how - Ajuste de la altura UIView dentro del control UIStackView



uistackview swift 3 (4)

Estoy utilizando un UIStackView en iOS 9 SDK. La altura del stackview es de 44 puntos. Tengo un UILabel y UIView dentro de StackView como se muestra a continuación:

Ahora, quiero que la vista verde sea mucho más pequeña que 44 ... muy parecida a 20. ¿Cómo puedo hacer eso?

ACTUALIZACIÓN: Sin el UIStackView estoy obteniendo restricciones de ruptura:

[GT.BubbleView:0x14536610] (Names: ''|'':UITableViewCellContentView:0x14536fd0 )>", "<NSLayoutConstraint:0x146b7300 GT.BubbleView:0x14536610.trailing == UITableViewCellContentView:0x14536fd0.trailingMargin>", "<NSLayoutConstraint:0x146c4000 ''UIView-Encapsulated-Layout-Width'' H:[UITableViewCellContentView:0x14536fd0(286)]>"

)


Si estás tratando de lograr un cuadrado de 20x20 como el de abajo:

Luego, todo lo que tiene que hacer es agregar otra UIView a su vista verde. Hacer que el tamaño de ese UIView 20x20pts. Luego, cambie el fondo de la vista pequeña a verde y el fondo de la vista más grande para borrar.

Dicho esto, esta solución no requiere una vista de pila y posiblemente complica en exceso su interfaz de usuario. Yo recomendaría simplemente usar autolayout en su lugar.

Stackviews son más útiles cuando

  1. desea compensar un cambio en la orientación del dispositivo,
  2. quiero apilar muchas cosas una encima de la otra,
  3. desea crear un diseño muy complicado con muchos elementos pero que tenga patrones que pueda repetir, o
  4. simplemente desea poder eliminar un elemento o agregar un elemento con el tamaño corrigiéndose a sí mismo

Esa lista no es exhaustiva, pero debería darle una idea de cuándo y por qué usaría una vista de pila.

Fuera de una célula prototipo

Este comportamiento es trivial. Simplemente puede establecer las restricciones en su vista: ''

Y luego establece las restricciones en la vista de pila:

Espero que esto ayude, salud!


  1. Primero necesitas agregar UIStackView en la cell

  2. Necesitas agregar restricciones a tu UIStackView

  3. Ajuste su UIStackView

  4. Arrastra y UILabel en tu UIStackView

  5. Luego arrastre y suelte UIView en su UIStackView

  6. Agregue green-UIView como subvista a pink UIView

  7. Ahora puede agregar restricciones de par a green-UIView

  8. Ahora puedes ejecutar la aplicación en simulador o dispositivo

    Tenga en cuenta que no he añadido ninguna restricción para UILabel .


El problema de la restricción de ruptura se puede solucionar fácilmente al establecer la prioridad de las restricciones de ancho y alto en 800 o superior.


Quería publicar mi respuesta aquí para que otros pudieran ver, a pesar de un problema ligeramente diferente al de los OP.

Estaba tratando de cambiar el tamaño de una UIView que contenía un UIStackView y las restricciones se estaban rompiendo. Estaba cambiando la restricción de altura de UIView entre 0 y 66 dependiendo de si había información relevante para mostrar que la vista de pila se estaba mostrando.

Pude corregir las restricciones de ruptura eliminando las restricciones superior e inferior de la vista de pila dentro de la vista y, en su lugar, configuré el centro verticalmente. Esto resultó en un desplazamiento mucho más suave en mi vista de tabla.