1

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

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

谢谢!

4

2 回答 2

1

UICollectionView是 的子类UIScrollView。它向其委托发送UIScrollViewDelegate协议中定义的所有消息。

您要回复的消息是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);
}
于 2013-04-10T05:40:34.933 回答
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 链接到 UICollectionView。

于 2013-04-11T02:19:42.303 回答