iOS 5 SDK中的容器视图是什么?

iOS 5 SDK中的容器视图是什么?,ios,xcode,ios5,Ios,Xcode,Ios5,我不明白为什么以及何时需要使用容器视图?我们如何通过代码实例化容器视图 我不明白为什么以及何时需要使用容器视图 当人们谈论容器视图时,他们通常指的是包含其他视图的普通旧UIView。通过以这种方式使用视图,可以将其包含的所有视图作为一个组进行移动,从而保持它们之间的相对位置。它还可以轻松地将所有包含的视图作为一个组隐藏 我们如何通过代码实例化容器视图 与通常从代码实例化UIView的方式相同: CGRect frame = CGRectMake(someX, someY, someWidth,

我不明白为什么以及何时需要使用容器视图?我们如何通过代码实例化容器视图

我不明白为什么以及何时需要使用容器视图

当人们谈论容器视图时,他们通常指的是包含其他视图的普通旧UIView。通过以这种方式使用视图,可以将其包含的所有视图作为一个组进行移动,从而保持它们之间的相对位置。它还可以轻松地将所有包含的视图作为一个组隐藏

我们如何通过代码实例化容器视图

与通常从代码实例化UIView的方式相同:

CGRect frame = CGRectMake(someX, someY, someWidth, someHeight);
UIView *container = [[UIView alloc] initWithFrame:frame];
之后,您可能希望向容器添加一些子视图,并最终将容器添加为视图控制器视图的子视图

另外,请注意,我们这里讨论的是视图,而不是视图控制器。人们还谈论容器视图控制器,他们指的是可以管理其他视图控制器的视图控制器。UITabBarController、UINavigationController和UISplitViewController是iOS提供的容器视图控制器的示例。如果你愿意,你可以创建自己的,但这是另一个问题的主题

更新:从您的评论中,您显然想知道故事板编辑器中的“容器视图”项。如果将一个拖动到视图中,您将看到:

  • 视图本身是用作占位符的UIView

  • 与视图一起,编辑器创建一个区域,您可以在其中编辑要由子视图控制器管理的内容。见下图


  • 这不仅仅是一个物体,而是几个。您将获得一个视图、一个子视图控制器和一个“嵌入”序列。当然,您可以自己在代码中创建这些视图,并根据需要适当地连接它们。

    容器视图是一个视图,您可以将其拖动到故事板中已有的一个视图控制器中(我们称之为viewControllerA)。您可以通过嵌入式segue自动将视图控制器连接到此视图。这个新的视图控制器设置了它的框架,因此它与容器视图的大小相同——如果调整容器视图的大小,控制器也会自动调整大小。因此,如果需要,可以将多个容器视图拖动到viewControllerA中,每个视图都有自己的视图控制器。在代码中,如果需要访问这些嵌入式视图控制器,可以从viewControllerA.childViewControllers访问它们——这将为您提供一个包含所有嵌入式视图控制器的数组


    WWDC 2012年会议视频中有一个关于这些容器视图的讨论,名为“在应用程序中采用故事板”。

    我认为这不是op所问的问题。IB中有一种新类型的视图(我认为只有在故事板中)可以包含视图控制器。该视图控制器通过嵌入式segue连接。这与普通视图和容器视图控制器不同。我不知道这件事的背后到底是什么,我找不到任何关于它的文档。我假设它可以用代码创建,但我不知道如何创建。@rdelmar,是的,我问的是IB中可用的“容器视图”。我混淆了“容器视图”和普通的“视图”。根据我的理解,视图还可以包含子视图,这些子视图也可以由它们自己的控制器管理。可能是我的理解有误,请帮忙澄清。@WilliamChoi,看看我的答案。这两个答案对我来说都很好。因为@rdelmar早些时候给出了更准确的答案,所以我将他/她的回答标记为答案。非常感谢,大师!这与以编程方式编写“包含控制器”相同吗?@huggie,在IB中使用容器视图与在代码中使用自定义容器控制器api相同。