0

有没有办法在特定位置以编程方式锁定滚动视图,并具有原生苹果反弹效果?

我有无限的滚动视图,想锁定在某个特定的地方。我发现我可以用它scrollViewWillEndDragging:withVelocity:targetContentOffset来确定锁定点将被交叉并像这样进行干预:

[self setContentOffset:CGPointMake(LockPositionX, LockPositionY) animated:YES];

然而,这没有原生反弹和橡皮筋效果。我尝试通过修改 scrollview.decelerationRate 来解决它,但看起来它不能有除 UIScrollViewDecelerationRateNormal 或 UIScrollViewDecelerationRateFast 以外的值。

也许我错过了一些东西,并且有一些隐藏的方法可以实现这一目标?

4

2 回答 2

0

添加下面的代码scrollViewWillEndDragging:withVelocity:targetContentOffset


if(lockingpointreached)
{
[UIView animateWithDuration:0.3f delay:0.0f options:UIViewAnimationOptionCurveEaseIn animations:^ {
    [self setContentOffset:CGPointMake(LockPositionX-20, LockPositionY-20)];
} completion:NULL];
}

希望这会帮助你。

于 2013-07-09T10:27:19.920 回答
0

我发现最简单的方法是实际使用本机反弹实现。事件虽然我们的滚动视图contentSize具有例如从 0 到 1000 的垂直边界,但如果我们将所有前面的所有内容都放在负原点(屏幕外),当我们反弹时它会变得可见(渲染)。

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

于 2013-07-12T12:12:19.233 回答