UIView与容器视图

时间:2014-07-21 07:36:21

标签: ios xcode uiview uicontainerview iad

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

  

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

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

3 个答案:

答案 0 :(得分:27)

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

UIView 帮助页面:

  

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

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


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

UIContainerView 帮助页面:

  

容器视图定义视图控制器的视图子图中可包含子视图控制器的区域。

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

SubViewController返回一个视图并处理它的事件。

答案 1 :(得分:8)

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

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

example use case of a container view

上面的图片来自this极其简单易懂的指南,指导您如何设置2个视图控制器之间共享的容器视图。

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

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

using multiple container view options

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

答案 2 :(得分:1)

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

  

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

有关容器视图goto link的更多详细信息 但在开始之前,你应该了解

您也可以查看this tutorial如何使用容器视图。

因此你可以选择这两种方法。 希望这会帮助你。快乐的编码:)

相关问题