【发布时间】:2013-01-01 23:24:32
【问题描述】:
我有一个启用分页的UIScrollView,以及一个对应的UIPageControl 来指示当前页面。这很好用,但我想引入惯性滚动以通过一次滑动来导航多个页面。
我见过的一个例子是 iOS 的 StickTennis 应用程序。我该如何做类似的事情?
【问题讨论】:
标签: uiscrollview uipagecontrol inertial-navigation
我有一个启用分页的UIScrollView,以及一个对应的UIPageControl 来指示当前页面。这很好用,但我想引入惯性滚动以通过一次滑动来导航多个页面。
我见过的一个例子是 iOS 的 StickTennis 应用程序。我该如何做类似的事情?
【问题讨论】:
标签: uiscrollview uipagecontrol inertial-navigation
您将滚动视图的pagingEnabled 属性设置为NO,然后使用数值推导计算用户手指离开屏幕时的滚动速度。从现在开始,你可以使用s = v0 * t + a / 2 * t ^ 2 公式来计算滚动视图的新位置(当a 是一个恒定的减速率,v0 是你刚刚计算的速度),然后你会重复调用scrollRectToVisible:animated: 带有适当更新的 rect 参数。
【讨论】:
UIScrollView 上的touchesEnded 事件时遇到了一些麻烦,因此我通过在scrollViewDidScroll 方法中找到uiView.contentOffset.x 值之间的差异来计算速度。但是你的回答是合乎逻辑的,所以我标记了它。再次感谢!