vertical raywenderlich how buttons ios uiviewcontroller autolayout uikit uistackview

ios - raywenderlich - uistackview swift programmatically



¿Cómo preparo la vista de UIViewController para ser agregada a UIStackView? (1)

Responder

Puedes hacer esto usando UIContainerViews combinado con UIStackViews y UIScrollViews , es una configuración complicada así que aquí hay un proyecto inicial para que comiences:

https://github.com/Rnorback/ScrollingStackView

Así es como se ve el proyecto:

Desea que los contenedores tengan diferentes tamaños. Para hacer eso, simplemente agregue restricciones de altura a los contenedores con Autolayout. Si desea cambiar la altura del desplazamiento. Entonces necesitarás cambiar la restricción de altura de UIStackView .

Breve explicacion

Al crear esta configuración, debe asegurarse de que la UIStackView distribution UIStackView permanezca en el relleno. De esta forma, puede establecer restricciones de altura en UIContainerViews.

Cuando configura algo en un UIScrollView , debe asegurarse de que el objeto esté fijado a los bordes de la vista de desplazamiento y tenga un ancho y alto definidos, de lo contrario, la vista de desplazamiento arrojará un error constriente. Pienso en ello, como la vista de desplazamiento intenta presionar en todos los lados de la vista de contenido y, si aparece un lado, la vista de desplazamiento no podrá mostrarla correctamente.

Espero que esto ayude.

Esto es lo que trato de hacer ...

Tengo un controlador de vista que necesita mostrar dinámicamente diferentes subvistas en función de la presencia de algunos datos.

Aquí hay una maqueta simple. Cada bloque de color representa una subvista única .

A veces, el bloque verde debe estar en la parte superior, a veces el bloque verde no se muestra en absoluto, a veces el bloque azul claro será algo diferente, etc.

Cada subvista tiene elementos interactivos, así que los he estado creando y añadiendo así:

  1. Definiendo un nuevo controlador de vista
  2. Definiendo su vista
  3. Llamar a addChildViewController y didMoveToParentViewController
  4. Llamar a addSubview en myNewViewController.view
  5. Usando SnapKit para hacer restricciones de diseño automático para posicionar la vista

Quiero hacer la transición a UIStackView porque me parece un buen sistema de soporte para esta vista porque todo lo que necesito hacer es apilar sus subvistas. Veo muchos errores de restricción en conflicto y marcos de vista inesperados cuando intento agregar subvistas con sus propias restricciones de diseño automático interno.

Pregunta

¿Me estoy preparando para el fracaso aquí mediante la incrustación de las vistas de 4-6 controladores de vista en la vista de un controlador de vista?

Además, ¿cómo le doy a las propiedades de vistas agregadas como alturas mínimas o tamaños de contenido sin ver muchas restricciones de ruptura con UIStackView ? (Para que puedan apilarse, pero uno de ellos es, por ejemplo, 400 alto, y el otro es 200 alto)