objective-c cocoa resize autolayout nslayoutconstraint

objective c - Cómo cambiar el tamaño de una vista principal según el tamaño de las subvistas diseñadas con Autolayout



objective-c cocoa (2)

Estoy preparando una vista personalizada que se parece al ejemplo que se muestra en la captura de pantalla. Añado todos los componentes de la interfaz de usuario (etiquetas, campos de texto, botones de radio, ..) en el tiempo de ejecución. Para posicionar los elementos Autolayout restricciones de Autolayout . Esta parte funciona bien hasta ahora.

El número de elementos varía de contexto a contexto. Me pregunto cómo podría usar las restricciones de Autolayout para redimensionar dinámicamente la vista principal (muy probablemente la altura de la vista). Por lo tanto, las restricciones de vista deben considerar la altura y los márgenes definidos para las subvistas adjuntas actualmente.


He hecho esto con la siguiente configuración:

  • La vista del contenedor no tiene restricción de altura.
  • La subvista superior tiene una restricción de espacio desde la parte superior de la vista del contenedor
  • Las vistas contenidas tienen restricciones de espacio entre ellas.
  • La vista inferior tiene una restricción de espaciado en la parte inferior de la vista del contenedor

El sistema de diseño automático satisface estas restricciones al cambiar el tamaño del contenedor para que se ajuste a su contenido.

Por supuesto, debe establecer dinámicamente las restricciones a medida que modifica los contenidos.


Si está utilizando NSStackView, asegúrese de no establecer una restricción para su altura y anchura y asegúrese de que todos los lados estén anclados.

Asegúrate también de establecer la propiedad Hugging del contenido en 1000.