如何在我自己的自定义视图中重现iPhone UIScrollView的轻弹滚动行为?

Dav*_*eck 5 iphone scroll uiscrollview motion

我想重现UIScrollView的flick-to-scroll行为,但我不想使用(或不能使用)该类.我能做什么?

Dav*_*eck 8

好的,我通过实现自己的库捕获了UIScrollView的动态来回答这个问题.

我的代码有用的是它独立于你正在使用的坐标系,动画速率和特定的UI类.它可以轻松嵌套在您选择的自定义视图类中.

iPhone的默认轻弹滚动行为很有趣.如果长时间按住手指并沿各个方向移动,您将看到只有最后一个方向用于计算滚动动作.

但是,如果您尝试自己构建此代码,您很快就会发现仅使用最后两个点来计算运动方向并不会削减它.取而代之的是,我的代码保留了短暂的触摸历史,并使用线性插值来确定触摸"本来会在不久之前"的位置.该插值点用作计算运动矢量的基础.这导致了非常愉快的互动.

该代码可在github上找到,网址为:http://gist.github.com/100855.它是根据BSD许可证发布的.