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 设备上,只有白色背景。
附加信息:
- 我正在使用 UIPageViewControllerTransitionStyleScroll,因此存在 'bounce' 效果(您可以在 iOS 9.3 上看到白色,在 [=33= 上看到重复的 viewController ] 10)
- 我不能使用其他过渡样式(因为其他一些解决方案建议只使用 'curl' 过渡)
- 我已经尝试过 UIPageViewController memory leak(请参阅 specialvict 的解决方案 post)
- 为了清楚起见,我希望 pageViewController 后面有一个白色背景,这样当您在第一张幻灯片上向左滚动或在最后一张幻灯片上向右滚动时,您只会看到白色。
找到解决方案。用于创建和设置 viewController 及其子视图的函数是标准函数,与上面教程中的代码没有明显不同。我遇到的问题是我在 viewDidLayoutSubviews 中调用了这个函数而没有检查 containerView 是否可能已经初始化(containerView 是我将 pageController 添加到的视图)。
为了检查发生了什么,我在初始化 containerView 时向日志打印了一条短消息。我删除了检查 if (!self.containerView) and iOS 9 仅初始化 containerView 一次,而 iOS 10 初始化两次。因此,在初始化 containerView 之前添加检查 if (!self.containerView) 可修复此问题 10.
我按照 this 教程创建了一个 PageViewController,当我 运行 它在 iOS 9.3 模拟器设备上时它工作得很好。但是,当我在 iOS 10.0 模拟器设备上 运行 它时,它会复制 pageViewController 后面的第一个视图控制器 - 这样当您在第一张幻灯片上向左滚动时,您可以看到初始 viewController 从它后面向外窥视,同样地,当你在最后一个 viewController 上向右滚动时,你也可以看到第一个 viewController 从它后面向外窥视。在 iOS 9.3 设备上,只有白色背景。
附加信息:
- 我正在使用 UIPageViewControllerTransitionStyleScroll,因此存在 'bounce' 效果(您可以在 iOS 9.3 上看到白色,在 [=33= 上看到重复的 viewController ] 10)
- 我不能使用其他过渡样式(因为其他一些解决方案建议只使用 'curl' 过渡)
- 我已经尝试过 UIPageViewController memory leak(请参阅 specialvict 的解决方案 post)
- 为了清楚起见,我希望 pageViewController 后面有一个白色背景,这样当您在第一张幻灯片上向左滚动或在最后一张幻灯片上向右滚动时,您只会看到白色。
找到解决方案。用于创建和设置 viewController 及其子视图的函数是标准函数,与上面教程中的代码没有明显不同。我遇到的问题是我在 viewDidLayoutSubviews 中调用了这个函数而没有检查 containerView 是否可能已经初始化(containerView 是我将 pageController 添加到的视图)。
为了检查发生了什么,我在初始化 containerView 时向日志打印了一条短消息。我删除了检查 if (!self.containerView) and iOS 9 仅初始化 containerView 一次,而 iOS 10 初始化两次。因此,在初始化 containerView 之前添加检查 if (!self.containerView) 可修复此问题 10.