UIPageViewController:子控制器在滚动期间忽略状态栏高度

Posted

技术标签:

【中文标题】UIPageViewController:子控制器在滚动期间忽略状态栏高度【英文标题】:UIPageViewController: Child Controller ignoring status bar height during scrolling 【发布时间】:2014-12-18 02:18:25 【问题描述】:

我在使用 UIPageViewController 时遇到了一些问题。如果我滚动到新页面,新的视图控制器状态栏的我正在滚动。滚动后,视图控制器将自身定位在状态栏下方

我正在使用 Storyboard(通用)。 UIPageViewController 具有属性 Extend Edges: Under Top Bars。我错过了什么?

automaticallyAdjustsScrollViewInsets 设置为 false 无效 edgesForExtendedLayout = UIRectEdge.None 的使用也不起作用 在这里找到了一些未解决的问题,但没有答案 (link)

更新

跳跃的另一个原因是“约束”中的“边距”(found here)。如果您使用约束,请确保取消选中边距(右侧对话框)。您可以稍后在实用程序(左侧对话框)中删除它们。检查两个连接的视图!

【问题讨论】:

刚刚偶然发现完全相同的问题,但仍然没有找到答案:(如果你能正常工作,请告诉我 无法重现,无论是否滚动,所有页面都在状态栏后面,如果我将pageViewController的frame的原始Y设置为20,则所有页面都不在它后面。一个示例项目会有所帮助。 【参考方案1】:

我刚刚找到了一个可能的解决方案:

在我的例子中,UIPageViewController 容器对其父视图有一个Top Space of 0 约束。 superview 是包含状态栏的根容器。

我将Top Space的值改为20,高于状态栏。现在它不会移动状态栏下方的视图,因为它们已经在移动了。

希望有帮助!

【讨论】:

以上是关于UIPageViewController:子控制器在滚动期间忽略状态栏高度的主要内容,如果未能解决你的问题,请参考以下文章

UIPageViewController 强制重新加载 ChildView 控制器

如何将数据从 UIPageViewController 传递到它的“子视图”之一?

UIPageViewController 结合安全区

滑动后调整超级视图大小时,UIPageViewController 视图会跳转

防止 UIPageViewController 的滑动影响 UISlider

如何在 UIPageViewController 和孩子之间正确传递对象