UIViewContainment子控制器没有正确调整大小

时间:2014-04-04 19:22:57

标签: ios uiviewcontroller

我在iOS应用中使用UIViewContainment。在我的containerView中有一个contentView,我正在尝试加载其他视图。子视图加载正常,因为它们的大小不正确,如屏幕截图所示。

NavigationBar是容器的一部分。

enter image description here

这是我用来在容器中加载childViewController的代码。

  // load the new controller
    self.contentViewController = [self.storyboard instantiateViewControllerWithIdentifier:menuItem.viewControllerStoryboardId];

    [self.containerView addSubview:self.contentViewController.view];
    [self.contentViewController didMoveToParentViewController:self];
    [self addChildViewController:self.contentViewController];

    self.title = menuItem.title;

以下似乎有效:

 self.contentViewController.view.frame = CGRectMake(0, 64, self.containerView.bounds.size.width, self.containerView.bounds.size.height);

2 个答案:

答案 0 :(得分:1)

尝试调整contentViewController视图的大小:

 self.contentViewController.view.frame = self.containerView.bounds;
 self.contentViewController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth
    | UIViewAutoresizingFlexibleHeight;

答案 1 :(得分:1)

首先注释掉使用容器视图的代码。现在它只是UIView和其他任何一个一样。给它一个背景颜色或图像,以确保它根据需要定位和调整大小。

如果不是(而且我猜不是),我无法帮助你,因为我对你的表现一无所知。 Struts和Springs,AutoLayout等。尝试自己修复它,如果不能,请返回布局细节。

让我们说它的形状和尺寸正如预期的那样工作。重新添加包含的UIViewController。这意味着此包含的视图控制器的UIView在其超级视图(self.containerView)内的大小/位置不正确。

再次进行相同的处理。在viewDidAppear中放置一个断点或记录并检查它的帧。您希望等到所有视图都经历了布局,并且在您到达viewDidAppear时就会发生这种情况。

如果视图不在您期望的位置,请尝试弄清楚,如果您不能,请回过头来了解有关如何进行布局的详细信息。