将ChildViewController的视图添加到根ViewController

时间:2014-03-17 17:48:05

标签: ios nslayoutconstraint

我想将子视图控制器添加到根视图控制器

在界面构建器中我放了一个如下所示的容器:

generic layout

我希望将容器的默认边距20添加到其超级视图

但是,childviewcontroller中的视图似乎滑出了容器的边界

为什么?

self.lvc = (LoginViewController *) [self.storyboard loginViewController];
    [self addChildViewController:self.lvc];
    self.fullFrameContainer.translatesAutoresizingMaskIntoConstraints = NO;
    [self.fullFrameContainer addSubview:self.lvc.view];
    [self.lvc didMoveToParrentViewController:self];


  result :

enter image description here

2 个答案:

答案 0 :(得分:1)

我不确定你看到了什么,但是你应该在你的根ViewController旁边添加第二个ViewController,设置embeded segue,然后设置你的containsverView的约束为你选择的20 pt,在你应该设置的子VC中你也应该设置你的约束在每个方向都是0(领先,尾随,顶部,底部)。您在IB中的子VC也会自动调整大小,以便您对子VC框架有视觉反馈。

enter image description here

修改

在代码或故事板中更新您的lvc框架,它将起作用:

self.lvc = [self.storyboard instantiateViewControllerWithIdentifier:@"childVC"];

NSLog(@"%.0f %.0f", self.lvc.view.frame.size.width, self.lvc.view.frame.size.height);

self.lvc.view.frame = CGRectMake(0.0, 0.0, 280.0, 508.0);
[self.lvc.view layoutSubviews];

[self addChildViewController:self.lvc];
self.fullFrameContainer.translatesAutoresizingMaskIntoConstraints = NO;
[self.fullFrameContainer addSubview:self.lvc.view];

答案 1 :(得分:1)

在viewWillAppear中我添加了这一行

self.lvc.view.frame = self.fullFrameContainer.bounds;

它修复了浮动框架问题