Ios 使用反弹效果在特定点锁定滚动视图

Ios 使用反弹效果在特定点锁定滚动视图,ios,uiscrollview,scrollview,Ios,Uiscrollview,Scrollview,有没有办法通过使用本机在特定位置以编程方式锁定scrollview 苹果反弹效应 我有无限的滚动视图,希望锁定在某个特定的位置。我发现 我可以使用ScrollViewWillendDraging:withVelocity:targetContentOffset计算出锁定点 将被交叉并像这样介入: [自设置内容偏移量:CGPointMake(LockPositionX,LockPositionY)动画:是] 然而,这并没有自然反弹和橡皮筋效果。我试着和你一起解决这个问题 正在修改scrollvie

有没有办法通过使用本机在特定位置以编程方式锁定scrollview 苹果反弹效应

我有无限的滚动视图,希望锁定在某个特定的位置。我发现 我可以使用
ScrollViewWillendDraging:withVelocity:targetContentOffset
计算出锁定点 将被交叉并像这样介入:

[自设置内容偏移量:CGPointMake(LockPositionX,LockPositionY)动画:是]

然而,这并没有自然反弹和橡皮筋效果。我试着和你一起解决这个问题 正在修改scrollview.decelerationRate,但它看起来不能具有除 UIScrollViewDecelerationRateNormal或UIScrollViewDecelerationRateFast


也许我遗漏了一些东西,有一些隐藏的方法可以实现这一点?

滚动视图中添加下面的代码WillendDraging:withVelocity:targetContentOffset



希望这能对您有所帮助。

我发现最简单的方法是实际使用本机反弹实现。 事件通过我们的scrollView
contentSize
具有例如从0到1000的垂直边界,如果我们将一些之前的事件放置在负原点(屏幕外),则当我们反弹时,它将可见(渲染)


如果出于某种原因,我们想将锁定点移动到前面的元素,我们只需将所有元素向下移动,以便只有锁定点上方的元素具有负原点

这看起来像某种解决方法。这里的问题是,无论我们的flint有多快,滚动条的当前速度是多少(快还是慢),我们总是在相同的持续时间0.3内设置动画,并跳到相同的静态移动位置(-20)。我们可以尝试用一些函数来模拟这些参数,这些函数采用当前的滚动速度,但我发现很难让它真正平稳地工作。
if(lockingpointreached)
{
[UIView animateWithDuration:0.3f delay:0.0f options:UIViewAnimationOptionCurveEaseIn animations:^ {
    [self setContentOffset:CGPointMake(LockPositionX-20, LockPositionY-20)];
} completion:NULL];
}