5

我想重现 UIScrollView 的轻弹滚动行为,但我不想使用(或不能使用)该类。我能做些什么?

4

4 回答 4

8

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

我的代码的有用之处在于它独立于坐标系、动画速率和您正在使用的特定 UI 类。它可以很容易地嵌套在您选择的自定义视图类中。

iPhone 的默认轻弹滚动行为很有趣。如果您长时间按住手指并向多个方向移动,您会发现只有最后一个方向用于计算滚动运动。

但是,如果您尝试自己构建此代码,您会很快发现仅使用最后两个点来计算运动方向并不能解决问题。相反,我的代码保留了很短的触摸历史记录,并使用线性插值来确定在一小段时间之前触摸“会”在哪里。该插值点用作计算运动矢量的基础。这导致了非常愉快的交互。

代码在 github 上可用,这里: http: //gist.github.com/100855。它是在 BSD 许可下发布的。

于 2009-04-24T01:22:01.533 回答
0

那么 UIScrollView 不适合你呢?这门课很灵活...

于 2009-04-24T04:19:51.263 回答
0

戴夫,我看到你已经用一些代码回答了你自己的问题,但是,设置以下内容并没有给你你需要的东西:

myScrollView.bounces = YES;
myScrollView.pagingEnabled = YES;
myScrollView.directionalLockEnabled = YES;

具体来说,听起来您已经重新实现了directionLockEnabled. 也许理解为什么你不能使用 UIScrollView 是更有趣的问题:-)

于 2009-04-24T07:42:05.757 回答
0

这很酷!我在一个应用程序中使用了它,其中我的可滚动视图是 1902-2037 范围内一天的图形数据,因此 UIScrollView 效率不高。

于 2010-05-12T03:37:31.047 回答