镜像滚动集合

时间:2013-04-10 05:32:48

标签: ios scroll uicollectionview

我创建了一个带有自定义布局的UICollection,以允许滚动垂直和水平。它是每个部分中相等部分和项目的网格(即10 x 10,20 x 20等)。我希望能够放置两个仍然在视图中的标题,一个在顶部,一个在左侧。我没有找到在UICollection本身内做到这一点的方法。所以,我在左边设置了UICollection,在顶部设置了另一个。但是,当用户左右和/或上下滚动网格时,我希望这两个集合能够反映这些动作。

所以,我的问题是:有没有办法将主UICollection的水平移动镜像到顶部UICollection,然后将主UICollection的垂直移动镜像到一边UICollection?

谢谢!

2 个答案:

答案 0 :(得分:1)

UICollectionViewUIScrollView的子类。它向委托发送UIScrollViewDelegate protocol中定义的所有消息。

您要回复的邮件是scrollViewDidScroll:。当您的主集合视图发送此消息时,您希望通过获取其contentOffset并将偏移量应用于您的边距集合视图来响应它。

// Implement this in your main collection view's delegate.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    [self synchronizeCollectionViewContentOffsets];
}

- (void)synchronizeCollectionViewContentOffsets {
    CGPoint offset = self.mainCollectionView.contentOffset;
    self.leftMarginView.contentOffset = CGPointMake(0, offset.y);
    self.topMarginView.contentOffset = CGPointMake(offset.x, 0);
}

答案 1 :(得分:0)

所以,我明白了。使用self.mainCollectionView.contentOffset总是返回(0,0),因此尝试使用我通过Storyboard和视图控制器实际分配给它的对象名。这很有用。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    [self synchronizeCollectionViewContentOffsets];
}

-(void)synchronizeCollectionViewContentOffsets {
    CGPoint offset = myCollectionView.contentOffset;
    myLeftMargin.contentOffset = CGPointMake(0, offset.y);
    myTopMargin.contentOffset = CGPointMake(offset.x, 0);
}

myCollectionView,myLeftMargin和myTopMargin通过Storyboard链接到UICollectionViews。