【问题标题】:Horizontal Parallax Scrolling UIScrollView iOS水平视差滚动 UIScrollView iOS
【发布时间】:2012-11-22 16:00:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios uiview uiscrollview parallax uiscrollviewdelegate


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 如何让次要视图每次都降落在同一个位置?两个滚动条的 contentSize 是否应该相同?该应用程序是应用商店上的 Instago,我希望主页幻灯片中显示位置的彩色框在触摸后以不同的速度移动。我需要图层以不同的速率移动,我不太确定移动图层占其他图层的百分比如何有助于实现这种效果。
    • 如果您想下载具有我所说的影响的应用程序,请查看itunes.apple.com/us/app/american-revolution-interactive/…(它是免费的)。在这个应用程序中,背景和时间线(前景)具有不同的宽度。因此,每个移动的百分比相同,但前景的 10% 的像素比背景的 10% 的像素多,因此前景看起来移动得更快。如果您想保持查看相同的 contentSize,您仍然可以选择更快地移动一个,但是移动得更快的那个必须在移动较慢的那个之前停止移动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 2014-11-08
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多