在使用transitionStyle时,如何将UIPageViewControllerSpineLocation设置为.mid。

时间:2017-09-08 17:03:38

标签: ios iphone swift uipageviewcontroller

我正在创建一个iPhone flashcard应用程序,用于研究各种术语。目前,我正在使用UIPageViewController来显示每个连续的卡(视图控制器)。当用户点击一张卡片时,它会翻转并向后显示它们,当它们向左或向右滑动时,它们可以在卡片之间滚动。 Current App interface

到目前为止,这种方法效果很好,但我希望能够在横向方向上显示卡片的正面和背面。通常,使用UIPageViewControllerDelegate的方法func pageViewController(_ pageViewController: UIPageViewController, spineLocationFor orientation: UIInterfaceOrientation)可以轻松完成,如果方向是水平的,则返回.mid。但是,由于我没有使用.pageCurl.scroll作为我的pageViewController的transitionStyle,因此永远不会调用此方法。 Apple Documentation不使用.pageCurl时也无法手动设置。 Apple的文档说:

  

仅当转换样式为pageCurl时,脊椎位置才有效。   如果转换样式是pageCurl,则此属性的默认值为min;否则,默认值为none。

我尝试添加方向为横向时调用的方法:

func showBothSides(){
    let currentViewController = self.pageViewController!.viewControllers![0] as! PracticePageDataVC
    let viewControllers: [UIViewController] = [currentViewController, currentViewController]
    self.pageViewController!.setViewControllers(viewControllers, direction: .forward, animated: true, completion: {done in })
}

但是这会返回错误:"'提供的视图控制器数量(2)与所请求的转换所需的数量(1)不匹配'&# 34;

所以基本上我正在寻找另一种解决方案来并排显示两个视图控制器,同时仍然保持卡之间水平滚动过渡的功能。

1 个答案:

答案 0 :(得分:0)

  

所以基本上我正在寻找另一种解决方案来并排显示两个视图控制器,同时仍保持在卡之间水平滚动的功能

你有两个选择。

  • UIPageViewController中的“页面”本身可以是一个自定义父(容器)视图控制器,它的两个子视图并排显示。

  • 您可以完全放弃使用UIPageViewController,并使用水平分页滚动视图实现您自己的界面(这就是我们在页面视图控制器存在之前所做的事情)。