UIPageViewController 在 iOS 10 时首先 ViewController 在 PageViewController 之后复制,但在 iOS 9.3 时在白色背景下表现正常

UIPageViewController duplicates first ViewController behind PageViewController for iOS 10 but behaves normally with a white background for iOS 9.3

我按照 this 教程创建了一个 PageViewController,当我 运行 它在 iOS 9.3 模拟器设备上时它工作得很好。但是,当我在 iOS 10.0 模拟器设备上 运行 它时,它会复制 pageViewController 后面的第一个视图控制器 - 这样当您在第一张幻灯片上向左滚动时,您可以看到初始 viewController 从它后面向外窥视,同样地,当你在最后一个 viewController 上向右滚动时,你也可以看到第一个 viewController 从它后面向外窥视。在 iOS 9.3 设备上,只有白色背景。

附加信息:

找到解决方案。用于创建和设置 viewController 及其子视图的函数是标准函数,与上面教程中的代码没有明显不同。我遇到的问题是我在 viewDidLayoutSubviews 中调用了这个函数而没有检查 containerView 是否可能已经初始化(containerView 是我将 pageController 添加到的视图)。

为了检查发生了什么,我在初始化 containerView 时向日志打印了一条短消息。我删除了检查 if (!self.containerView) and iOS 9 仅初始化 containerView 一次,而 iOS 10 初始化两次。因此,在初始化 containerView 之前添加检查 if (!self.containerView) 可修复此问题 10.