故事板:
约束:
结果:
我试图了解自动布局以及如何在容器内使用它。
当我打开Storyboard时,我得到了一个默认的ViewController。我在里面放了一个View Container。然后我添加了一个松散的(没有连接到任何东西)ViewController。我希望将新ViewController中的内容放入容器中。
所以添加到View中的ViewController包含三个标签,我在使用autolayout。
单击Storyboard中容器视图控制器的黑条我转到Identity Inspector并将Custom Class设置为" ContainerViewController"。然后我将故事板ID设置为" ChildController"对于松散的View Controller。
然后我在viewDidLoad
中覆盖ContainerViewController.m
:
- (void)viewDidLoad
{
[super viewDidLoad];
UIViewController *child = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildController"];
[self addChildViewController:child];
[self.view addSubview:child.view];
}
放入容器时,为什么要赢得自动布局工作的约束?我希望他们会,所以我可以进一步采用UIPageViewController。
修改
所以它似乎是帧大小。在将其添加为子视图之前,我需要执行类似的操作:
child.view.frame = CGRectMake(0, 0, 265, 370);
现在我在ViewController.h
中为Container创建了一个插座。
@property (weak, nonatomic) IBOutlet UIView *container;
但..从ContainerViewController,如果尚未设置此属性的视图控制器(ViewController),我怎么能问?
ViewController *parent = (ViewController*)self.presentingViewController;
UIView *container = parent.container;
NSLog(@"ParentView Container Width: %f, Height: %f", container.frame.size.width, container.frame.size.height);
它只给了我零宽度和高度,因为视图还没有加载。稍后当它加载时,我得到实际值..
NSLog(@"View Controller Container. Width: %f, Height: %f", self.container.frame.size.width, self.container.frame.size.height);
问题:如何准备/加载presentViewController的属性?
答案 0 :(得分:1)
添加子视图控制器时,您应该像这样设置其视图框
UIViewController *child = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildController"];
[self addChildViewController:child];
[self.view addSubview:child.view];
//set the view frame
child.view.frame = self.view.bounds;
因此,子视图控制器将调整其视图框架的大小,并且布局约束将完成他们的作业;)
修改强>
将代码放在-(void)viewDidLayoutSubviews
中,如下所示:
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
UIViewController *child = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildController"];
[self addChildViewController:child];
[self.view addSubview:child.view];
//set the view frame
child.view.frame = self.view.bounds;
}
答案 1 :(得分:1)
尝试在viewWillLayoutSubviews
中为视图控制器设置框架