UIPageViewController 中的奇怪约束行为

Strange constraint behaviour in UIPageViewController

在情节提要中,我 UINavigationController 没有导航栏,根视图控制器 UIPageViewController 有 2 个 children: LoginVC and ChoosePlaceVC.

MainPageVC 是 UIPageViewController 的一个简单子类,我只是在其中设置了

[self setViewControllers:@[loginVC] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

在登录 ViewController 中,我将徽标图像的顶部约束设置为 0(徽标到屏幕顶部的距离为 0)。但是当我第一次看到它时,状态栏的 distance 是 20,只有当我转到 UIPageViewController 中的下一个 VC 时(weakSelf 是对自定义 UIPage[= 的弱引用38=]):

[weakSelf setViewControllers:@[choosePlaceVC] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) {

        }];

然后返回登录VC:

[weakSelf setViewControllers:@[loginVC] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) {

        }];

徽标到状态栏的距离becomes 0。当我重复移动到下一个 VC 并返回时,距离保持 = 0(这是正确的距离)

为什么第一次出现距离=20?

经过长时间的调查,我明白了:

在 Storyboard 的 UIPageViewController 属性检查器的扩展边缘中,我取消选中了 Under Top Bars 和 Under Bottom Bars 的复选框。

现在约束的奇怪行为是固定的(我注意到在这种情况下我从视图顶部偏移了 20 像素,但始终保持不变。但是如果添加主视图的子视图大小与主视图一样,如果我将所有元素添加到此子视图,到顶部的距离 = 0 px)。