在特定点锁定滚动视图并具有反弹效果

时间:2013-07-09 10:18:23

标签: ios uiscrollview scrollview

有没有办法在具有原生的特定位置以编程方式锁定scrollview 苹果反弹效应?

我有无限的scrollview,想锁定某个特定的地方。我发现 我可以使用scrollViewWillEndDragging:withVelocity:targetContentOffset来确定锁定点 将会像这样进行交叉和干预:

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

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

也许我错过了一些东西并且有一些隐藏的方法来实现它?

2 个答案:

答案 0 :(得分: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];
}

希望这会对你有所帮助。

答案 1 :(得分:0)

我发现最简单的方法是实际使用本机反弹实现。 虽然我们的scrollView contentSize有例如垂直边界从0到1000,如果我们把所有前面的所有前一个带有负原点(在屏幕外),它将在我们反弹时可见(渲染)。

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