13

所以这是我要解决的问题。

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

回到 xcode 后,我开始按照我在那里学习的方式进行编码。但是当我在故事板上掉下UIView来时,我看到了containerView,我认为在编写教程时它并不存在。
所以我在这里询问这两种方法及其优缺点。
所以基本上它的UIViewvs ContainerView。我应该采取哪种方式,为什么?
任何帮助将不胜感激。

4

3 回答 3

30

UIView当您已经有一个视图并且不需要专用的视图控制器来构建和处理其中的交互时,您可以使用它。

UIView帮助页面:

UIView 对象声明其封闭的矩形区域superview(它在视图层次结构中的父级)并负责该区域中的所有绘图......

简化结构: YourViewController ---(has)---> UIView


当您UIContainerView需要在已有的视图控制器中嵌入另一个视图控制器时使用。嵌入式视图控制器负责返回所UIViewContainer占用区域的视图。因此,您UIContainerView知道使用哪个视图控制器UIView在其占据的区域内进行渲染。

UIContainerView帮助页面:

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

简化结构: YourViewController ---(has)---> SubViewController ---(has)---> UIView

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

于 2014-07-21T08:32:04.320 回答
10

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

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

容器视图的示例用例

上图来自这个极其简单、易于遵循的指南,该指南将引导您了解如何设置在 2 个以上视图控制器之间共享的容器视图。

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

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

使用多个容器视图选项

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

于 2016-06-23T14:37:26.663 回答
1

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

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

有关容器视图的更多详细信息,请转到链接 但在开始之前,您应该了解

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

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

于 2014-07-21T08:18:05.690 回答