顶部和侧面的UICollectionView浮动头(UICollectionView Floatin

2019-08-17 06:42发布

如何实现在头UICollectionView ? 我知道你可以把补充意见,但我不知道如何使他们像上面这样的头一节“浮动” UITableView做。

这里是我的情况:我有一个collectionView具有网格格式中规定的细胞。 您可以水平和垂直滚动。 我想的顶部有一个头,这样当你横向滚动它与它水平滚动,但它不会垂直滚动。 我也想在左侧同样的事情在那里垂直卷轴collectionView而不是水平。 与补充意见实施这一正确的方法?

我要寻找的最终功能类似于iOS上的Numbers电子表格应用程序。

在此先感谢您的帮助!

Answer 1:

更新iOS9:

let flow = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
flow.sectionHeadersPinToVisibleBounds = true

把它传递。



Answer 2:

编辑:正如评论所说,这个答案是有效的,但并不适用于多个部分。 看到一个更好的解决这个博客: http://blog.radi.ws/post/32905838158/sticky-headers-for-uicollectionview-using#notes


您需要指定您的布局行为:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
  NSMutableArray* attributesArray = [[super layoutAttributesForElementsInRect:rect] mutableCopy];

  BOOL headerVisible = NO;

  for (UICollectionViewLayoutAttributes *attributes in attributesArray) {
    if ([attributes.representedElementKind isEqualToString:UICollectionElementKindSectionHeader]) {
      headerVisible = YES;
      attributes.frame = CGRectMake(self.collectionView.contentOffset.x, 0, self.headerReferenceSize.width, self.headerReferenceSize.height);
      attributes.alpha = HEADER_ALPHA;
      attributes.zIndex = 2;
    }
  }

  if (!headerVisible) {
    UICollectionViewLayoutAttributes *attributes = [self layoutAttributesForSupplementaryViewOfKind:UICollectionElementKindSectionHeader
                                                                                        atIndexPath:[NSIndexPath
                                                                                                     indexPathForItem:0
                                                                                                     inSection:0]];
    [attributesArray addObject:attributes];
  }

  return attributesArray;
}


文章来源: UICollectionView Floating Headers on Top and Side