UIPageViewController 作为子视图,横向双页,纵向单页

Posted

技术标签:

【中文标题】UIPageViewController 作为子视图,横向双页,纵向单页【英文标题】:UIPageViewController as subview with double page in landscape and single page in portrait 【发布时间】:2020-01-07 13:02:47 【问题描述】:

我的任务:我需要用TransitionStyle.pageCurl 实现UIPageViewController。在纵向它应该在横向显示单页和双页。还应该可以在两页上(当双页时)而不是一次只在一个上进行捏合缩放。

到目前为止我的解决方案:我有一个包含UIScrollViewUIViewController。然后我将UIPageViewController 视图添加到我的滚动视图中,如下所示:self.scrollView.addSubview(self.pageViewController.view)

我的问题:当我旋转设备时,func pageViewController(_ pageViewController: UIPageViewController, spineLocationFor orientation: UIInterfaceOrientation) -> UIPageViewController.SpineLocation 没有被调用,因此我无法在双页和单页之间切换,或者我错过了什么?

【问题讨论】:

【参考方案1】:

我找到了类似问题的答案:https://***.com/a/34868768/2501509。我的问题是我没有保留UIPageViewController 本身,而只保留了它的视图。通过将页面 viewController 添加到我的 viewController 我的问题得到了解决:self.addChild(self.pageViewController)

【讨论】:

以上是关于UIPageViewController 作为子视图,横向双页,纵向单页的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 8 中将 ViewController 的 View 作为子视图添加到 UIPageViewController 会在显示/隐藏时产生奇怪的 UINavigationBar

UIPageViewController 与滚动视图奇数插入反弹

滚动样式 UIPageViewController 中的多个可见页面

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

观察 UIPageViewController 的转换状态

UIPageViewController 和 AutoLayout:未正确应用约束