我正在实现一个类似于包含数据行的表视图的视图。我想要做的是,在滚动之后,每一行都会捕捉到一组正确的位置,因此顶行和底行的边界是完全可见的 - 并且不会像通常那样进行修剪。有没有办法在滚动开始之前获取滚动目标?这样我就能够校正最终的y位置,例如,行高的倍数。
答案 0 :(得分:3)
确定没有公共API来确定滚动减速的最终静止Y偏移。在进一步研究之后,我无法弄清楚Apple如何管理减速的公式。我从滚动事件中收集了一堆数据,记录了起始速度和减速行程的距离,并从中粗略估计了它可能停止的位置。
我的目标是提前预测停止的地方,并将减速转换为特定的移动到偏移。这种技术的问题在于scrollRectToVisible:animated:
总是在一段时间内发生,因此,不是用户对轻弹手势所期望的速度,而是取决于轻弹的强度,它要么快得多,要么慢得多。
另一个选择是观察减速并等到减速到某个阈值,然后拨打scrollRectToVisible:animated:
,但即使这很难“恰到好处”。
第三种选择是等到减速完成后,检查它是否恰好停在你想要的偏移倍数,然后调整,如果没有。我个人并不关心这一点,因为你要么停下来然后加速,要么惯性停车或反向停车。