链接 2 UIScrollView 与不同的分页大小

Posted

技术标签:

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

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

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

我想要达到的目标如下:

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

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

谢谢!

【问题讨论】:

【参考方案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 的框架在每次滚动后稍微偏离。

【讨论】:

以上是关于链接 2 UIScrollView 与不同的分页大小的主要内容,如果未能解决你的问题,请参考以下文章

将多个容器视图放在 ios 中的分页 UIScrollView 中

怎么设置uiscrollview的分页大小

UIScrollview 分页中的 UITextview

Android 中 ScrollView 如何实现类似 iPhone 中 UIScrollView 的分页功能?

MySQL根据特定顺序分页大数据

是否可以双向实现分页 UIScrollView?