代码之家  ›  专栏  ›  技术社区  ›  Dave Peck

如何在我自己的自定义视图中重现iphone uiscrollview的flick-to-scroll行为?

  •  5
  • Dave Peck  · 技术社区  · 16 年前

    我想复制uiscrollview的flick-to-scroll行为,但我不想使用(或不能使用)那个类。我能做什么?

    4 回复  |  直到 13 年前
        1
  •  8
  •   Dave Peck    16 年前

    好的,我通过实现自己的库来回答这个问题,这个库捕获了uiscrollview的动态特性。

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

    iPhone的默认Flick to Scroll行为很有趣。如果您长时间按住手指并向不同方向移动,您将看到只有最后一个方向用于计算滚动运动。

    但是,如果您尝试自己构建这段代码,您会很快发现,仅仅使用最后两个点来计算运动方向并不会对其造成影响。相反,我的代码保留了触摸的简短历史记录,并使用线性插值来确定触摸__在少量时间之前会在何处出现。该插值点作为运动矢量计算的基础。这会导致非常愉快的互动。

    代码在Github上提供,这里: http://gist.github.com/100855 . 它是根据BSD许可证发布的。

        2
  •  0
  •   Kendall Helmstetter Gelner    16 年前

    那么,uiscrollview对您不起作用呢?那门课很灵活…

        3
  •  0
  •   Rog    16 年前

    戴夫,我看到你用一些代码回答了你自己的问题,但是,没有设置下面的代码,你需要什么:

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

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

        4
  •  0
  •   Lee Ann Rucker    15 年前

    这太酷了!我在一个应用程序中使用了它,在1902-2037年间,我的滚动视图相当于一天的图形数据,所以uiscrollview是不高效的。