即使没有在UIPageViewController中设置数据源,也希望具有.scroll动画

时间:2019-09-03 08:09:08

标签: ios swift uipageviewcontroller

我有一个UIPageViewController,它显示五个ViewControllers(包含在ViewControllers的数组中)。我正在使用手势识别器来向后/向前移动页面,而不是viewControllerBefore / viewControllerAfter方法。它工作正常,但是页面突然改变。我想要的动画类似于我以前应用.scroll时获得的动画。 我希望能够显示两个ViewControllers,类似于我们在.scroll动画中缓慢滑动时所遇到的情况。 你能建议怎么做吗? 谢谢。

正如我在此问题中提到的,我遇到了滚动问题-> [{Disable swiping in horizontal UICollectionView inside my PageViewController to swipe in UIPageViewController 因此,我决定对此行发表评论-> self.dataSource = self 我决定明确提供与手势相关的功能。

@objc func handleSwipe(gesture: UISwipeGestureRecognizer) {
    print(gesture.direction)
    switch gesture.direction {
    case UISwipeGestureRecognizer.Direction.down:
        print("down swipe")
    case UISwipeGestureRecognizer.Direction.up:
        print("up swipe")
    case UISwipeGestureRecognizer.Direction.left:

        self.setViewControllers([ViewControllerArray[1]], direction: .forward, animated: false, completion: nil)

    case UISwipeGestureRecognizer.Direction.right:

        self.setViewControllers([ViewControllerArray[2]], direction: .forward, animated: false, completion: nil)

    default:
        print("other swipe")
    }
}

1 个答案:

答案 0 :(得分:1)

animated参数更改为true

@objc func handleSwipe(gesture: UISwipeGestureRecognizer) {
    print(gesture.direction)
    switch gesture.direction {
    case UISwipeGestureRecognizer.Direction.down:
        print("down swipe")
    case UISwipeGestureRecognizer.Direction.up:
        print("up swipe")
    case UISwipeGestureRecognizer.Direction.left:

        self.setViewControllers([ViewControllerArray[1]], direction: .forward, animated: true, completion: nil)

    case UISwipeGestureRecognizer.Direction.right:

        self.setViewControllers([ViewControllerArray[2]], direction: .forward, animated: true, completion: nil)

    default:
        print("other swipe")
    }
}