通话状态栏将 UIPageViewController 内容视图向下推

In-call status bar pushes UIPageViewController content view down

我正在使用 UIPageViewController。在此视图中切换通话中状态栏时,它会调整得很好。如果调用状态栏在加载 UIPageViewController 之前打开,页面将被下推 20pt,并在 space.

中显示一个黑条

下面是截图:


其他帖子建议使用将页面控制器上的 automaticallyAdjustsScrollViewInsets 设置为 NO。我已经尝试过了,但没有用。我也试过 self.edgesForExtendedLayout = UIRectEdgeNone;

将 UIPageViewController 框架的原点设置为 0 可行,但感觉不对:

CGRect frame = self.pageController.view.frame;
frame.origin.y = 0;
self.pageController.view.frame = frame;

我最终通过确保视图控制器的主视图上有正确的约束来解决这个问题。这是一个示例,我将视图控制器的视图作为子视图添加到根视图控制器,然后使用 Masonry (https://github.com/SnapKit/Masonry) 建立约束,将所有子视图控制器的主视图的边缘捕捉到根视图控制器(它本身已经有来自 Interface Builder 的自动调整掩码)。这解决了我的状态栏留下黑色 space 的问题,因为它向下推了这个视图(而不是重新调整大小):

[self.view addSubview:viewController.view];
[viewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(self.view);
}];

在你的情况下,我没有你的完整代码,所以我不确定,但类似于:

[self.pageController.view mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(self.pageController.view.superview);
}];

..应该可以解决问题。