我有水平列表,我正在实现自己的滚动逻辑。我有“触摸和拖动”滚动工作很好,但我有“轻弹”手势的麻烦。所有内置的可滚动视图都具有以下功能:如果您“轻弹”视图,它会根据轻弹的强度更快或更慢地滚动。
有人对我的观点有什么建议吗?
我现在正在做的是更改自定义UIView的UIView.center.x坐标以在屏幕上滚动
答案 0 :(得分:9)
我强烈建议您弄清楚如何使用内置的UIScrollView类。 Apple投入了大量精力使滚动感觉“正确”。你可能能够重新创造一些甚至全部的感觉,但这需要做很多工作。最好还是放弃已经完成的工作。
答案 1 :(得分:1)
如果你想要实现自己的滚动视图,你必须根据扫描距离的长度和它穿过屏幕的速度来进行视图滚动。
将这些参数作为输入并使用简单的geometry math,您可以计算扫描结束后视图应滚动多远(touchesEnded事件)。
当然,这并不像听起来那么简单,使得轻弹手势感觉恰到好处,自然就更难了。
答案 2 :(得分:1)
如果你真的打算自己这样做,Drew McCormack有一个great article on MacResearch,他解释了基于动量的滚动背后的一些物理。他的实现使用HTML,CSS和JavaScript,但核心原则可以引入您的自定义UIView子类。