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)。
在情节提要中,我 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)。