3

我想知道是否有一种方法可以使 UICollectionView 行或标题保持类似于电子表格程序中的冻结窗格功能。

我基本上希望第一列和第一行保持静止,而其余部分是可平移的。

这可能与 UICollectionView 有关吗?

4

1 回答 1

9

我发现以下代码会将第一行/部分设置为始终可见,并将滚动相应的部分/行:

- (NSArray *) layoutAttributesForElementsInRect: (CGRect) rect
{
    NSMutableArray *attributes = [NSMutableArray array];
    for (NSInteger section = 0; section < self.collectionView.numberOfSections; section++)
        for (NSInteger item = 0 ; item < [self.collectionView numberOfItemsInSection: section]; item++)
        {
            UICollectionViewLayoutAttributes *layout = [self layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForItem:item inSection:section]];
            if(section==0 || item==0)
            {
                UICollectionView * const cv = self.collectionView;
                CGPoint const contentOffset = cv.contentOffset;
                CGPoint origin = layout.frame.origin;
                if(item==0)
                {
                    origin.x = contentOffset.x;
                    layout.zIndex = 1022;
                }
                if(section==0)
                {
                    origin.y = contentOffset.y;
                    layout.zIndex = 1023;
                    if(item==0)layout.zIndex = 1024;
                }
                layout.frame = (CGRect)
                {
                    .origin = origin,
                    .size = layout.frame.size
                };
            }
            [attributes addObject:layout];
        }
    return attributes;
}
于 2013-07-10T17:10:44.047 回答