几个 UICollectionViews 像 iBooks 一样水平滚动

Posted

技术标签:

【中文标题】几个 UICollectionViews 像 iBooks 一样水平滚动【英文标题】:Several UICollectionViews Scroll Horizontally like iBooks 【发布时间】:2015-01-31 10:43:16 【问题描述】:

我正在尝试创建一个包含多个collectionViews 的视图。向左或向右滑动会滚动到另一个collectionView

我已添加了scrollView 作为启用分页的第一步。我还将内容大小设置为页数。

int nb_of_items = 10;

    // Scroll view
    for (int i=0; i< nb_of_items ; i++) 
        CGRect frame = CGRectMake(_scrollView.frame.size.width * i,
                                  0,
                                  _scrollView.frame.size.width,
                                  _scrollView.frame.size.height);

                _collectionView.frame = frame;
                [_scrollView addSubview:_collectionView];
    

    _scrollView.contentSize = CGSizeMake(_scrollView.frame.size.width * nb_of_items, _scrollView.frame.size.height);

    _scrollView.delegate = self;

collectionView 在我的故事板中定义,并将数据源和委托设置为 self。 我只在第一页获得收藏。在其他页面上,我什么也得不到

我还尝试在scrollView 减速时刷新集合

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

    [self updateCollection];


- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

    if (!decelerate) 
        [self updateCollection];
    


-(void)updateCollection

    NSLog(@"Updating Collection");
    [_collectionView reloadData];


有什么办法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

请记住,集合视图是滚动视图,因此您已经具备滚动的能力。您已经知道滚动视图只能将滚动限制到整页。因此,您可以将集合视图设置为使用页面,然后用户可以在集合内容的各个部分之间滚动。

您需要做的就是确保布局以正确的方向滚动(水平而不是垂直)并且每个页面都有适当的内容。您可能希望为此创建自己的布局,但只要您适当地设置项目大小,它就可以与流布局一起使用。

【讨论】:

以上是关于几个 UICollectionViews 像 iBooks 一样水平滚动的主要内容,如果未能解决你的问题,请参考以下文章

使 UIVIew 看起来像 IB 中的 UIView 的最佳方法?

单个 UIViewController 上的 2 个 UICollectionViews,具有不同数量的部分

iOS UICollectionViews 和自动布局

嵌套 UICollectionViews 的问题

Swift 中 UITableViewCell 中的同步滚动 UICollectionViews

从多个 UICollectionVIews 内的 UICollectionViewCell 推送新的 UICollectionViewController