我在iOS应用中使用UIViewContainment。在我的containerView中有一个contentView,我正在尝试加载其他视图。子视图加载正常,因为它们的大小不正确,如屏幕截图所示。
NavigationBar是容器的一部分。
这是我用来在容器中加载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);
答案 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
时就会发生这种情况。
如果视图不在您期望的位置,请尝试弄清楚,如果您不能,请回过头来了解有关如何进行布局的详细信息。