如何在iPhone上为“轻弹”手势编码平滑滚动

时间:2009-12-28 18:40:14

标签: iphone objective-c cocoa-touch

我有水平列表,我正在实现自己的滚动逻辑。我有“触摸和拖动”滚动工作很好,但我有“轻弹”手势的麻烦。所有内置的可滚动视图都具有以下功能:如果您“轻弹”视图,它会根据轻弹的强度更快或更慢地滚动。

有人对我的观点有什么建议吗?

我现在正在做的是更改自定义UIView的UIView.center.x坐标以在屏幕上滚动

3 个答案:

答案 0 :(得分:9)

我强烈建议您弄清楚如何使用内置的UIScrollView类。 Apple投入了大量精力使滚动感觉“正确”。你可能能够重新创造一些甚至全部的感觉,但这需要做很多工作。最好还是放弃已经完成的工作。

答案 1 :(得分:1)

如果你想要实现自己的滚动视图,你必须根据扫描距离的长度和它穿过屏幕的速度来进行视图滚动。
将这些参数作为输入并使用简单的geometry math,您可以计算扫描结束后视图应滚动多远(touchesEnded事件)。 当然,这并不像听起来那么简单,使得轻弹手势感觉恰到好处,自然就更难了。

答案 2 :(得分:1)

如果你真的打算自己这样做,Drew McCormack有一个great article on MacResearch,他解释了基于动量的滚动背后的一些物理。他的实现使用HTML,CSS和JavaScript,但核心原则可以引入您的自定义UIView子类。