UIPageViewController 页面控件太靠近 iPhone X iOS 11 上的主页栏

UIPageViewController page controls too close to home bar on iPhone X iOS 11

我有一个带有一个主视图控制器的程序,其中包含一个按钮,用户可以点击该按钮以通过 UIPageViewController 显示 "Quick Help" 的 4 页。 4个页面分别是QuickHelpViewController0ID - QuickHelpViewController3ID,每一个都是标准的UIViewController。当他们点击按钮时,我 运行 这个:

-(void)showQuickHelp
{
    // Load the quick help page view controller
    self.quickHelpPageVC = [self.storyboard instantiateViewControllerWithIdentifier:@"QuickHelpPageViewControllerID"];
    self.quickHelpPageVC.dataSource = self;

    // Create initial quick help page
    UIViewController *quickHelpVCA = [self quickHelpVCForPageIndex:0];
    NSArray <UIViewController *> *quickHelpVCs = @[quickHelpVCA];

    // And assign it to the page VC
    [self.quickHelpPageVC setViewControllers:quickHelpVCs direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

    [self presentViewController:_quickHelpPageVC animated:YES completion:nil];
}  // showQuickHelp:

我还提供了一个 UIPageViewControllerDataSource 来在用户滚动到 next/previous 页面时根据需要创建 4 个页面中的每一个。

这在 iOS 9.3 和 10.x 上运行良好。它也适用于除 iPhone X(模拟器)以外的所有设备的 11.0。在那上面,一排 4 个页面指示点位于屏幕底部,仅比 iOS 11 提供的新 "home bar" 高 1 或 2 个像素(向上滑动以切换应用程序等) .

我从 Apple 找到了一个名为 Building Apps for iPhone X 的视频,其中开发人员讨论了解决类似问题的问题,但在那种情况下,他的解决方案是简单地更改自动布局以将子 UIPageControl 限制为bottom "safe area" 而不是传统的底部布局指南。但是我没有在另一个视图控制器上使用 UIPageControl ;我正在使用 UIPageViewController,但我没有看到任何方法来控制 window 底部的页面控件的位置。 (是的,我在 Interface Builder 中启用了 "Use Safe Area Layout Guides" 选项。)

我无法想象在我的场景中 iOS 11 默认情况下 UIPageViewController 的大小不正确,我也没有看到任何明显的修复方法。有什么建议吗?

我有同样的问题,但发现如果我取消选中主视图控制器上的 'Extend Edges - Under Bottom Bars',这些点会向上移动并在模拟器上正确显示 iPhone X。不幸的是,它还会在所有其他设备上向上移动点...如果页面上没有太多内容,这可能不是问题,但对我来说,它截断了一页,上面有很多文字。

它看起来确实像一个错误,所以我会等待 Apple 希望解决这个问题,因为我不想为了 iPhone X

此问题的修复将在 11.2 中推出

https://9to5mac.com/2017/10/30/ios-11-2-beta-1/

UIKit - Resolved Issues

Displaying a page control in UIPageViewController on an iPhone X no longer overlaps the home indicator at the bottom of the screen. (34478195)