想要那个 .scroll 动画,即使数据源没有在 UIPageViewController 中设置

Posted

技术标签:

【中文标题】想要那个 .scroll 动画,即使数据源没有在 UIPageViewController 中设置【英文标题】:Want to have that .scroll animation, even when the datasource is not set in UIPageViewController 【发布时间】:2019-09-03 08:09:08 【问题描述】:

我有一个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")
    

【问题讨论】:

为什么是animated: false @Erumaru 天哪!我这边真是个愚蠢的错误!非常感谢您为我指出这一点:) 我很高兴知道这有帮助,我已经添加了答案。 【参考方案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")
    

【讨论】:

以上是关于想要那个 .scroll 动画,即使数据源没有在 UIPageViewController 中设置的主要内容,如果未能解决你的问题,请参考以下文章

仅在用户滚动时调用 Scroll,而不是在 animate()

饿了么插件infinite-scroll

使 $(window).scroll() 上的 animate() 平滑

即使应用程序处于后台,也可以为 UiView 设置动画

[前端小项目] 滚动动画 Scroll Animation (50projects50days)

小程序cover-view踩过的坑