5

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

  • (透明滚动条,拦截/传递滚动事件)
  • (我想在 x 方向上移动 1.2 倍速度的对象叠加层,但不超过它的“着陆点”)
  • (另一个我想在 x 方向以 1.0 倍的速度移动的叠加层)

我知道它必须通过修改 contentOffset 来做一些事情,我让我的代表全部设置好,以便他们都可以以 1 倍的速度朝着同一个方向移动……关于解决方案的任何提示?

4

1 回答 1

3

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

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

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

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

于 2013-01-01T18:33:26.300 回答