渐进式滚动子scrollView

Posted

技术标签:

【中文标题】渐进式滚动子scrollView【英文标题】:Progressively scrolling child scrollView 【发布时间】:2013-08-24 06:25:41 【问题描述】:

我有 2 个滚动视图,较小的滚动视图需要比较大的滚动视图滚动慢一点(并在下一个“页面上停止”)。所以基本上,滚动较大的滚动视图会滚动较小的滚动视图,但速度比更大的滚动视图。(我知道很困惑)。

所以 scrollView1(较大)和 scrollView2,较小:当您滑动 scrollView1 时,scrollView2 也在滚动,但速度较慢。两者都启用了分页,并且它们的 contentSizes 已经根据 scrollView2 的内容设置。

我只是无法计算两者之间的偏移量,因此它们可以完美滚动。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

    if ( scrollView == scrollView1 )
    
        CGFloat xOffset = (scrollView2.contentSize.width * scrollView1.contentSize.width); // the issue

        [scrollView2 scrollRectToVisible:CGRectMake(xOffset, 0, scrollView2.frame.size.width, scrollView2.frame.size.height) animated:YES];
    

【问题讨论】:

【参考方案1】:

尝试将这两行替换为:

float xOffset = scrollView1.contentOffset.x * (scrollView2.frame.size.width / scrollView1.frame.size.width);
[scrollView2 setContentOffSet:CGPointMake(xOffset,0) animated:YES];

这将获取 scrollView1 的偏移量,将其除以两个视图之间的帧大小差异,并将 scrollView2 的 contentOffset 设置为该值(这比将 rect 滚动到可见更好)。

【讨论】:

【参考方案2】:

这对我有用,试试吧..

CGPoint offset = CGPointMake(scroll1.contentOffset.x, scroll1.contentOffset.y);

offset.x /= 3;
offset.y /= 3;

// Scroll the background scroll view by some smaller offset
scroll2.contentOffset = offset;

【讨论】:

@Jsdodgers 感谢您的编辑,您能告诉我编辑器中的代码和文本是怎样的... 您只需要在代码和文本之间有一行,并且在每行代码之前有四个空格。

以上是关于渐进式滚动子scrollView的主要内容,如果未能解决你的问题,请参考以下文章

ember.js 无限滚动(延迟加载)

在Subview位置选择滚动视图子视图滚动

VUE项目中图片加载过大处理方式-渐进式方式-懒加载方式--附源码

在 AndEngine 中滚动子场景

ViewPager里面的ViewPager。如何水平滚动父寻呼机而不是滚动子寻呼机,但保持子寻呼机垂直滚动?

Sencha touch - 滚动子也滚动父