【问题标题】:Progressively scrolling child scrollView渐进式滚动子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];
    }
}

【问题讨论】:

    标签: iphone ios uiscrollview


    【解决方案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 感谢您的编辑,您能告诉我编辑器中的代码和文本是怎样的...
      • 您只需要在代码和文本之间有一行,并且在每行代码之前有四个空格。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多