我有两个视图控制器,父级和子级。
因此,在该viewDidLoad
方法中,我执行以下操作:
ChildViewController* childViewController = [[ChildViewController alloc] init];
[self addChildViewController:childViewController];
// ChildViewController sets his own constraints in viewDidLoad
[self.view addSubview:childViewController.view];
[childViewController didMoveToParentViewController:self];
//
// setup constraints to expand childViewController.view to
// fill the size of parent view controller
//
所以基本上发生的事情是updateViewConstraints
在应用父控制器约束之前在 ChildViewController 上调用的,所以实际上和我在自定义方法中self.view.frame == CGRectZero
指定的完全一样。loadView
ChildViewController
translatesAutoresizingMaskIntoConstraints
全部设置NO
为所有视图。
在这种情况下设置约束的正确方法是什么,以便ChildViewController
在父级之后更新他的约束?
来自两个控制器的当前日志非常令人沮丧,我不明白如何在 viewWillLayoutSubviews 之前调用 updateViewConstraints:
App[47933:c07] ChildViewController::updateViewConstraints. RECT: {{0, 0}, {0, 0}}
App[47933:c07] ParentViewController::updateViewConstraints
App[47933:c07] ChildViewController:viewWillLayoutSubviews. RECT: {{0, 0}, {984, 454}}
App[47933:c07] ChildViewController:viewDidLayoutSubviews. RECT: {{0, 0}, {984, 454}}