iOS视差滚动效果(如雅虎新闻摘要应用)

Tha*_*nka 15 yahoo ios parallax

我想知道如何实现类似于Yahoo News Digest应用程序的视差滚动.其中当用户水平滚动背景图像时,以不同的速度滚动,启用分页.

可能是他们使用带有背景视图的ScrollView来完成它.不完全确定.提示实现这样的滚动会很棒.我检查了类似的问题,但找不到我想要的答案.

Fog*_*ter 21

我之前用2个scrollviews完成了这个.

您有主要的细节滚动视图,然后是它后面的视差滚动视图(或者您想要的任何地方).

然后您成为详细滚动视图的代表.

scrollView:didScroll然后,您可以在方法中调整视差视图的滚动.

如果你只是做x轴那么你想要这样的东西......

CGFloat detailMaxOffset = self.detailScrollView.contentSize.width - CGRectGetWidth(self.scrollView.frame);

CGFloat percentage = self.detailScrollView.contentOffset.x / maxOffset;

CGFloat parallaxMaxOffset = self.parallaxScrollView.contentSize.width - CGRectGetWidth(self.parallaxScrollView.frame);

[self.parallaxScrollView setContentOffset:CGPointMake(percentage * parallaxOffset, 0);
Run Code Online (Sandbox Code Playgroud)

这会将scrollviews内容偏移"百分比"设置为相同.

要获得视差效果,您只需要使contentSize每个滚动视图的不同.

如果视差滚动视图具有比细节滚动视图更大的内容大小,则它将滚动得更快.如果内容大小较小,则滚动速度会变慢.

  • @BabulPrabhakar你可以将scrollview放在前面.或者您可以在前视图上覆盖hitTest:withEvent:方法.或禁用前视图上的触摸.或者移动没有视差效果的按钮. (2认同)

Mic*_*nry 11

这是答案.我从uitableview继承它,以便数据可以重复使用并将其包装在uiview中.https://github.com/michaelhenry/MHYahooParallaxView

谢谢,凯尔