水平视差滚动UIScrollView iOS

nmo*_*ock 5 uiscrollview uiview uiscrollviewdelegate ios parallax

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

  • (透明卷轴,拦截/传递滚动事件)
  • (物体叠加,我想在x方向上移动1.2倍,但不超过它的"着陆点")
  • (我希望在x方向以1.0x的速度移动的另一个叠加)

我知道它必须做一些修改contentOffset的事情,我让我的代表都进行了设置,这样他们就能以1x的速度向相同的方向移动......任何有关解决方案的提示?

Jas*_*lli 3

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

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

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

如果您需要进一步解释,请告诉我。