有没有办法使UICollectionView行或标题仍然停留在冻结窗格?

Ant*_*nko 3 ios uicollectionview uicollectionviewcell

我想知道是否有办法让UICollectionView行或标题保持与电子表格程序中的冻结窗格功能类似.

我基本上希望第一列和第一列保持静止,而其余的是可以平移的.

这可能与UICollectionView有关吗?

小智 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;
}
Run Code Online (Sandbox Code Playgroud)

  • 您还需要在scrollViewDidScroll上使用invalidate布局; (2认同)