【问题标题】:Linking 2 UIScrollView with different paging sizes链接 2 UIScrollView 与不同的分页大小
【发布时间】:2014-01-20 06:02:45
【问题描述】:

我有一个iphone app,我想在其中执行以下操作:

  1. 一个类别标题栏,它是一个水平的scrolling 自定义分页大小UIScrollView,用户可以在其中通过swiping 左右切换类别。
  2. 标题栏下方的类别内容页面,也是水平滚动的UIScrollView(全屏宽度分页)。用户还可以通过向左或向右滑动来在内容页面之间切换。

我想要达到的目标如下:

  1. UIScrollViews 都链接在一起,因此在类别标题栏中滑动也会滑动内容页面,或者在内容页面中滑动也会滑动标题栏。
  2. 如果无法做到这一点,那么至少,用户必须能够滑动内容页面,并且标题也相应地滑动(不需要反向操作)。

我确实记得看到一些应用程序实现了类似的功能,但我现在想不起来了。有什么想法我该怎么做?

谢谢!

【问题讨论】:

    标签: ios iphone objective-c uiscrollview


    【解决方案1】:

    我已经在我的应用程序中完成了。类别视图就像一个“展示”视图,在滑动或触摸后,触发通知。内容可以是UICollectionView,因此它有setContentOffset: 方法来“转到”目标页面。或者您可以在 contentView 中使用addChildViewController,并与 pagingEnabled UIScrollView 结合使用。

    【讨论】:

      【解决方案2】:

      参考Making two UIScrollViews follow each others scrolling,我将两个滚动视图的 UIScrollView 委托设置为父视图控制器,并调用了 scrollViewDidScroll 方法。

      - (void)matchScrollView:(UIScrollView *)first toScrollView:(UIScrollView *)second {
          CGPoint offset = first.contentOffset;
          offset.x = (second.contentOffset.x/second.frame.size.width) * first.frame.size.width;
          first.contentOffset = offset;
      }
      
      - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
           if([scrollView isEqual:firstScrollView]) {
              isSecondScrolling = NO;
          } else if ([scrollView isEqual:secondScrollView]) {
              isSecondScrolling = YES;
          }
      }
      
      - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
          if ([scrollView isEqual:firstScrollView] && isSecondScrolling == NO) {
              [self matchScrollView:secondScrollView toScrollView:firstScrollView];
          } else if ([scrollView isEqual:_midPanelScrollView] && isSecondScrolling == YES) {
              [self matchScrollView:firstScrollView toScrollView:secondScrollView];
          }
      }
      

      但是我添加了布尔值 isSecondScrolling,以阻止 firstScrollView 在 secondScrollView 滚动时启动 matchScrollView。否则会导致 secondScrollView 的框架在每次滚动后稍微偏离。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-28
        • 1970-01-01
        • 2011-10-12
        • 2014-11-06
        • 2011-07-02
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        相关资源
        最近更新 更多