目前我的UICollectionView中有一个标题单元格。当我尝试滚动UICollectionView时,标题单元格将与UICollectionView列表一起滚动。 我可以知道如何将标题单元格棒设置在顶部吗?请帮忙。谢谢。
以下是我的ViewController中标题单元格的示例代码: -
- (UICollectionView *)collectionView
{
if (!_collectionView) {
DCHoverFlowLayout *layout = [DCHoverFlowLayout new];
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
_collectionView.frame = CGRectMake(0, DCTopNavH, ScreenW, ScreenH - DCTopNavH);
_collectionView.showsVerticalScrollIndicator = NO;
_collectionView.delegate = self;
_collectionView.dataSource = self;
[_collectionView registerClass:[Product_HeadView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:Product_HeadViewID];
}
return _collectionView;
}
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
UICollectionReusableView *reusableview = nil;
if (kind == UICollectionElementKindSectionHeader){
Product_HeadView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:Product_HeadViewID forIndexPath:indexPath];
WEAKSELF
};
reusableview = headerView;
return cell;
}
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
_lastContentOffset = scrollView.contentOffset.y;
}
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
if(scrollView.contentOffset.y > _lastContentOffset){
[self.navigationController setNavigationBarHidden:YES animated:YES];
self.collectionView.frame = CGRectMake(0, 20, ScreenW, ScreenH - 20);
self.view.backgroundColor = [UIColor whiteColor];
}else{
[self.navigationController setNavigationBarHidden:NO animated:YES];
self.collectionView.frame = CGRectMake(0, DCTopNavH, ScreenW, ScreenH - DCTopNavH);
self.view.backgroundColor = ThemeBackgroundColor;
}
}
#pragma mark - <UIScrollViewDelegate>
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//Detect Button Visible
_backTopButton.hidden = (scrollView.contentOffset.y > ScreenH) ? NO : YES;
WEAKSELF
[UIView animateWithDuration:0.25 animations:^{
__strong typeof(weakSelf)strongSelf = weakSelf;
strongSelf.footprintButton.dc_y = (strongSelf.backTopButton.hidden == YES) ? ScreenH - 60 : ScreenH - 110;
}];
}
更新: -
答案 0 :(得分:1)
一种选择是使用UIViewController
而不是UICollectionViewController
。添加视图以用作视图控制器的标题,然后在标题视图下添加集合视图。
这样,标题不是集合视图的一部分,它根本不会滚动。
答案 1 :(得分:1)
使用viewForSupplementaryElementOfKind
方法。添加以下行:
UICollectionViewFlowLayout *layout = collectionView.collectionViewLayout;
layout.sectionHeadersPinToVisibleBounds = YES;
答案 2 :(得分:0)
tedd的答案的快速版本:
let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
layout.sectionHeadersPinToVisibleBounds = true