减慢 UIPageViewController 分页
Posted
技术标签:
【中文标题】减慢 UIPageViewController 分页【英文标题】:Slowing down UIPageViewController paging 【发布时间】:2018-09-30 21:59:40 【问题描述】:当用户的手指从屏幕上抬起时,我希望我的 UIPageViewController 慢慢滚动到下一页。比默认情况下要慢。如果可能的话,对它的减速曲线等进行更多的控制。
我不想使用SCPageViewController。但是你可以在这个演示动画的“普通模式”中看到类似我所说的效果:
我已经尝试获取它的底层 UIScrollView 并设置它的 decelerationRate:
let scrollView = view.subviews.filter $0 is UIScrollView .first as! UIScrollView
scrollView.decelerationRate = .normal // or .fast
但我看不到任何效果。我还尝试使用以下方式分配自定义 decelerationRate:
UIScrollView.DecelerationRate(rawValue: 0.5)
它也没有效果,decelerationRate 只会重置为之前的值(.normal 或 .fast)
我也知道可以为UIScrollView设置一个delegate,但是我真的不知道该怎么做。
你知道有什么方法可以达到这个效果,尽可能简单吗?
【问题讨论】:
如果您可以为滚动时刻设置动画,如何让其变慢呢?以下帖子在 Obj C 中,但我认为它可能是相关的:***.com/questions/4237659/… 谢谢。是的,它可能有用,但我想不出一种使用它的方法。页面控制器在后台进行一些计算以查找下一个/上一个页面位置等。另外我不知道将动画代码放在哪里。以及如何禁用默认动画,而不会失去 UIPageViewController 的其他好处。 【参考方案1】:我没有尝试做你所说的,但我认为你需要通过覆盖/设置 UIViewController.transitioningDelegate
或 UIViewController.transitionCoordinator
来实现自己的动画。可能两者兼而有之。在网络上搜索应该会找到一些关于自定义转换的博客文章,这些文章将为您指明正确的方向。这可能是一个好的开始https://www.raywenderlich.com/322-custom-uiviewcontroller-transitions-getting-started
如果这没有帮助。我唯一的其他建议是实现您自己的页面视图控制器。
【讨论】:
以上是关于减慢 UIPageViewController 分页的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 或 UIPageViewController
UIPageViewController 没有在旋转时调整其子视图控制器的大小