水平视差滚动UIScrollView iOS

时间:2012-12-04 22:11:11

标签: ios uiview uiscrollview parallax uiscrollviewdelegate

我正在尝试在分页滚动视图上实现水平视差,这使得一个视图看起来在x方向上前进得更快,但在相同点上“落地”(例如,说(0,0)) 。这是我的常规设置/视图层次结构:

  • (透明卷轴,截取/通过滚动 事件)
  • (对象叠加,我想在x中移动1.2倍速 方向,但不超过它的“着陆点”)
  • (我希望在x中以1.0x的速度移动的另一个叠加层 方向)

我知道它必须修改contentOffset并且让我的代表进行所有设置,以便他们可以以相同的方向以1x的速度移动...任何关于解决方案的提示?

1 个答案:

答案 0 :(得分:3)

如果您想保留当前的设置,您只需要使用跟踪滚动事件的滚动条-(void)scrollViewDidScroll:(UIScrollView *)scroller委托方法。在此方法中,您将跟踪内容偏移,然后使用速度倍增器以您希望的方式移动其他视图。

但是,只需2个滚动视图即可轻松完成此操作,当移动时,您可以使用相同的contentOffset委托方法跟踪其-(void)scrollViewDidScroll:(UIScrollView *)scroller,并相应地移动另一个。

此外,如果两个滚动视图的大小不同,那么在contentOffset委托方法中跟踪-(void)scrollViewDidScroll:(UIScrollView *)scroller然后使用值和滚动视图的{{1}非常容易实现自然的视差效果获取滚动视图移动距离的百分比,然后简单地设置辅助滚动视图的contentSize以滚动其contentOffset的百分比。

如果您需要进一步解释,请与我们联系。