UIView vs Container View

Entonces, aquí está el problema que trato de resolver.

En cada viewController estoy tratando de insert anuncios y los elementos de control reales. Terminé un par de tutoriales en raywenderlinch.com para comprender cómo las personas ponen anuncios profesionalmente en su aplicación. Utilizaron UIViews para tener dos vistas bajo la vista principal del controller de vista. Así que entendí completamente que una subview contiene los anuncios y otra contiene los contenidos reales de la aplicación. si el anuncio está cargado, tome la pantalla o permita que otra vista tenga todo el área disponible.

Después de regresar a xcode comencé a codificar la forma en que aprendí allí. pero cuando caía UIView en el guión gráfico, vi containerView , que creo que no estaba presente cuando se escribió el tutorial.
Entonces estoy aquí para preguntar sobre el enfoque y sus pros y contras.
Entonces básicamente es UIView vs ContainerView . ¿Qué path debo hacer y por qué?
Cualquier ayuda sería muy apreciada.

Utiliza UIView cuando ya tiene una vista y no necesita tener un controller de vista dedicado para generar y manejar interacciones dentro de ella.

Desde la página de ayuda de UIView :

El object UIView reclama una región rectangular de su vista de superview (su elemento principal en la jerarquía de vistas) y es responsable de todo el dibujo en esa región …

Estructura simplificada: YourViewController — (tiene) —> UIView


Utiliza UIContainerView cuando necesita insert otro controller de vista en el que ya tiene. El controller de vista embedded se encarga de devolver una vista para la región que ocupa UIViewContainer . Por lo tanto, su UIContainerView sabe qué controller de vista usar para hacer UIView dentro de la región que ocupa.

Desde la página de ayuda de UIContainerView :

La vista de contenedor define una región dentro del subgrafo de vista de un controller de vista que puede include un controller de vista secundario.

Estructura simplificada: YourViewController — (tiene) —> SubViewController — (tiene) —> UIView

Ese SubViewController devuelve una vista y maneja sus events.

Como una respuesta alternativa, también puede considerar el caso de uso en lugar de las diferencias técnicas. Por ejemplo: ¿Por qué usar una vista de contenedor?

Un uso común para las vistas de contenedor es reutilizar (compartir) una vista, directamente en el guión gráfico. Anteriormente, la reutilización de una vista requería la creación de un file "xib" separado y la adición de esa vista mediante progtwigción cuando se cargaba el controller de vista.

caso de uso de ejemplo de una vista de contenedor

La image de arriba es de esta guía extremadamente simple y fácil de seguir que lo guía a través de cómo configurar una vista de contenedor que se comparte entre 2+ controlleres de vista.

Algunas otras ideas sobre cuándo usarlo:

  • Una barra de navigation forma parte de UINavigationController, que es un controller de vista de contenedor . Entonces, si desea build una alternativa personalizada, probablemente use una vista de contenedor.
  • Un contenedor puede ayudar en cualquier momento que desee mostrar temporalmente una vista compleja sobre su VC actual, pero no puede o no desea presentar otro VC de manera modal. Este enfoque todavía le permite crear esa vista temporal en el creador de interfaces, para configurar las restricciones de layout automático para él, etc.
  • También encontré una guía que explica que hay una manera de cambiar las diferentes vistas de contenedor en function de la situación, lo que permite que su VC tenga sub secciones que sean muy dinámicas, sin tener que build esas subsecciones programáticamente. Una image, de esa guía, que muestra a lo que me refiero:

usar varias opciones de vista de contenedor

Es de esperar que esto ayude a las personas que intentan descubrir cuándo se les aplica una vista de contenedor. ¡Si tiene otros casos de uso de ejemplo, edite / añádalos o déjelos en los comentarios!

Si ve en detalle esta vista de contenedor del tipo de class UIView. Para get información de por qué necesitamos containerView, debería ver la parte a continuación.

En la mayoría de las forms, un controller de vista de contenedor es como un controller de vista de contenido. Administra vistas y contenido, coordina con otros objects en su aplicación y responde a events en la cadena de respuesta. Antes de diseñar un controller de contenedor, ya debería estar familiarizado con el layout de los controlleres de vista de contenido. Las preguntas de layout en "Creación de controlleres personalizados de vista de contenido" también se aplican al crear contenedores.

Para get más detalles sobre la vista del contenedor, ingrese el enlace. Pero antes de comenzar, debería tener una comprensión de

y también puede consultar este tutorial sobre cómo usar la vista de contenedor.

Por lo tanto, puedes ir por ambos enfoques. Espero que esto te ayudará. feliz encoding 🙂