3

コンテンツが水平にスクロールされ、デバイスの全幅で表示される必要があるコレクション ビューがあります。コレクション ビューは にclipsToBounds設定されてNOおり、そのフレームは600pagingEnabled設定されていYESます。

私が探している効果は、コンテンツが別のビューの下にスライドするように見えることですが、セルがコレクション ビューのフレームの外にスクロールされると、再利用できるように削除されます。

これを機能させる方法、または同様の効果を達成する方法を知っている人はいますか?

4

1 に答える 1

6

Below is the simplest way that I've found to get this effect. It involves your collection view and an extra secret scroll view.

Set up your collection views

  • Set up your collection view and all its data source methods.
  • Frame the collection view; it should span the full width that you want to be visible.
  • Set the collection view's contentInset:

    _collectionView.contentInset = UIEdgeInsetsMake(0, (self.view.frame.size.width-pageSize)/2, 0, (self.view.frame.size.width-pageSize)/2);
    

This helps offset the cells properly.

Set up your secret scrollview

  • Create a scrollview, place it wherever you like. You can set it to hidden if you like.
  • Set the size of the scrollview's bounds to the desired size of your page.
  • Set yourself as the delegate of the scrollview.
  • Set its contentSize to the expected content size of your collection view.

Move your gesture recognizer

  • Add the secret scrollview's gesture recognizer to the collection view, and disable the collection view's gesture recognizer:

    [_collectionView addGestureRecognizer:_secretScrollView.panGestureRecognizer];
    _collectionView.panGestureRecognizer.enabled = NO;
    

Delegate

- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
    CGPoint contentOffset = scrollView.contentOffset;
    contentOffset.x = contentOffset.x - _collectionView.contentInset.left;
    _collectionView.contentOffset = contentOffset;
}

As the scrollview moves, get its offset and set it to the offset of the collection view.

I blogged about this here, so check this link for updates: http://khanlou.com/2013/04/paging-a-overflowing-collection-view/

于 2013-04-17T22:24:09.610 に答える