我想知道如何实现类似于 Yahoo News Digest 应用程序的视差滚动。其中,当用户水平滚动时,背景图像以不同的速度滚动,同时启用分页。
可能是他们使用带有背景 View 的 ScrollView 来做到这一点。不太确定。提示实现这种滚动会很棒。我检查过类似的问题,但找不到我要找的答案。
最佳答案
我以前用 2 个 ScrollView 做过这个。
你有主要的细节 ScrollView ,然后是它后面的视差 ScrollView (或者你想要的任何地方)。
然后你就成为了detail scrollview的delegate。
在 scrollView:didScroll
方法中,您可以调整视差 View 的滚动。
如果你只是做 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);
这会将 ScrollView 内容偏移“百分比”设置为相同。
要获得视差效果,您只需使每个 ScrollView 的 contentSize
不同即可。
如果视差 ScrollView 的内容大小大于详细 ScrollView ,它将滚动得更快。如果内容较小,则滚动速度会较慢。
关于iOS 视差滚动效果(就像在 Yahoo News Digest 应用中一样),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24989923/