UIPageViewController 中的奇怪约束行为

Posted

技术标签:

【中文标题】UIPageViewController 中的奇怪约束行为【英文标题】:Strange constraint behaviour in UIPageViewController 【发布时间】:2015-05-18 15:25:07 【问题描述】:

在情节提要中,我有 UINavigationController 没有导航栏和根视图控制器 UIPageViewController 有 2 个孩子:LoginVC 和 ChoosePlaceVC。

MainPageVC 是我刚刚设置的 UIPageViewController 的一个简单子类

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

在 Login ViewController 中,我将 logo 图像的约束设置为 top 为 0(logo 到屏幕顶部的距离为 0)。但是当我第一次看到它时,状态栏中的distance 是 20,并且只有当我转到 UIPageViewController 中的下一个 VC 时(weakSelf 是对自定义 UIPageViewController 的弱引用):

[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?

【问题讨论】:

【参考方案1】:

经过长时间的调查,我想通了:

在扩展边缘中 UIPageViewController 的属性检查器的情节提要中,我未选中顶部栏和底部栏下的复选框。

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

【讨论】:

以上是关于UIPageViewController 中的奇怪约束行为的主要内容,如果未能解决你的问题,请参考以下文章

带有 UITableView 的 UIPageViewController 有奇怪的大小

带有 Aspect Fill 图像模式的奇怪 UIPageViewController 滑动行为

在 iOS 8 中将 ViewController 的 View 作为子视图添加到 UIPageViewController 会在显示/隐藏时产生奇怪的 UINavigationBar

iOS UIPageViewController 页面控件不同步

UIPageViewController 空白页

UIPageViewController 滑动和点击之间的不同行为