UIView与容器视图

所以这是我正在努力解决的问题。

在每个viewController我试图插入广告和实际的控制元素。 我在raywenderlinch.com上完成了几个教程,以了解人们如何专业地将广告放在他们的应用程序中。 他们使用UIViews在视图控制器的主视图下有两个视图。 所以我完全明白,一个subview持有广告,另一个持有实际的应用程序内容。 如果广告已加载占用屏幕或让其他视图有所有可用区域。

在我回到xcode之后,我开始编写我在那里学到的方法。 但是当我在故事板上放置UIView时候,我看到了containerView视图,在编写教程的时候,我认为这并不存在。
所以我在这里要问一下这两种方法及其利弊。
所以基本上它的UIView vs ContainerView 。 我应该怎样做,为什么?
任何帮助将不胜感激。

当你已经有一个视图的时候使用UIView ,而且你不需要专门的视图控制器来构build和处理它内部的交互。

UIView帮助页面:

UIView对象声明了其封闭的superview (它在视图层次结构中的superview的矩形区域,并负责该区域中的所有绘制…

简单的结构: YourViewController —(有)—> UIView


当您需要将另一个视图控制器embedded到已有视图控制器中时,可以使用UIContainerView 。 embedded式视图控制器负责为UIViewContainer占据的区域返回一个视图。 因此,您的UIContainerView知道哪个视图控制器用于呈现它占据的区域内的UIView

UIContainerView帮助页面:

容器视图在视图控制器的视图子图中定义了一个区域,其中可以包含子视图控制器。

简单的结构: YourViewController —(有)—> SubViewController —(有)—> UIView

该SubViewController返回一个视图,并处理其事件。

作为替代答案,您也可以考虑使用情况,而不是技术差异。 例如:为什么使用容器视图?

容器视图的常见用法是直接在故事板中重用(共享)视图。 以前,重用视图需要创build一个单独的“xib”文件,并在视图控制器加载时以编程方式添加该视图。

示例容器视图的用例

上面的图像是从这个非常简单,易于遵循的指导,引导你如何设置一个容器视图,在2个视图控制器之间共享。

关于何时使用它的一些其他想法:

  • 导航栏是UINavigationController的一部分, 它是一个容器视图控制器 。 所以,如果你想build立一个自定义的替代品,你可能会使用一个容器视图。
  • 一个容器可以帮助你暂时在当前的VC之上显示一个复杂的视图,但是不能/不想以模态方式显示另一个VC。 这种方法仍然允许您在界面构build器中构build临时视图,为其设置自动布局约束等
  • 我还发现了一个指南,解释说有一种方法可以根据情况来切换不同的容器视图,从而使VC可以拥有非常dynamic的子部分,而无需通过编程方式构build这些子部分。 来自该指南的图片展示了我所指的内容:

使用多个容器视图选项

希望这可以帮助那些试图弄清容器视图适用于他们的人们。 如果您还有其他示例用例,请编辑/添加它们或将它们留在注释中!

如果您详细看到这些UIView类types的容器视图。 为了得到我们为什么需要containerView的见解,你应该看到下面的部分

在大多数情况下,容器视图控制器就像内容视图控制器一样。 它pipe理视图和内容,与应用程序中的其他对象进行协调,并响应响应者链中的事件。 devise容器控制器之前,您应该已经熟悉devise内容视图控制器。 “创build自定义内容视图控制器”中的devise问题在创build容器时也适用。

关于容器视图的更多细节goto link但是在开始之前,你应该有一个理解

也可以查看本教程以了解如何使用容器视图。

因此,你可以采取两种方法。 希望这会帮助你。 快乐编码:)