UICollectionView纯代码,如何去除Section Header
1个回答
2016-08-30 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
代码设计Section的header和Footer
好多小伙伴都在找UICollectionView是否有这么个属性,比如上图说到Accessories什么的,其实不然。大家首先要搞明白意见事情,header和footer是追加视图,属于layout中的,所以要代码设置section要在UICollectionViewFlowLayout:
- (UICollectionViewFlowLayout *) flowLayout{
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
flowLayout.。。。。。。//各属性设置
flowLayout.headerReferenceSize = CGSizeMake(300.0f, 50.0f); //设置head大小
flowLayout.footerReferenceSize = CGSizeMake(300.0f, 50.0f);
return flowLayout;
}
如果你用的是Xib或者Storyboard,不想在上图属性设置,想用代码:
- (void)viewDidLoad
{
[super viewDidLoad];
//这个地方一定要写,不然会crash
[_ui_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"GradientCell"];
[_ui_collectionView registerClass:[RecipeCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView"];
//代码控制header和footer的显示
UICollectionViewFlowLayout *collectionViewLayout = (UICollectionViewFlowLayout *)_ui_collectionView.collectionViewLayout;
collectionViewLayout.headerReferenceSize = CGSizeMake(375, 50);
}
其中_ui_collectionView是:
@property (weak, nonatomic) IBOutlet UICollectionView *ui_collectionView;
。
说明(这部分说明可以参见xib设置sectionview):
当然要让上述代码起作用还要注册UICollectionReusableView的派生类(上述代码中的RecipeCollectionReusableView),还要实现:
- (UICollectionReusableView *) collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableview = nil;
if (kind == UICollectionElementKindSectionHeader)
{
RecipeCollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath];
reusableview = headerView;
}
// if (kind == UICollectionElementKindSectionFooter)
// {
// RecipeCollectionReusableView *footerview = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"FooterView" forIndexPath:indexPath];
//
// reusableview = footerview;
// }
reusableview.backgroundColor = [UIColor redColor];
return reusableview;
}
好多小伙伴都在找UICollectionView是否有这么个属性,比如上图说到Accessories什么的,其实不然。大家首先要搞明白意见事情,header和footer是追加视图,属于layout中的,所以要代码设置section要在UICollectionViewFlowLayout:
- (UICollectionViewFlowLayout *) flowLayout{
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
flowLayout.。。。。。。//各属性设置
flowLayout.headerReferenceSize = CGSizeMake(300.0f, 50.0f); //设置head大小
flowLayout.footerReferenceSize = CGSizeMake(300.0f, 50.0f);
return flowLayout;
}
如果你用的是Xib或者Storyboard,不想在上图属性设置,想用代码:
- (void)viewDidLoad
{
[super viewDidLoad];
//这个地方一定要写,不然会crash
[_ui_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"GradientCell"];
[_ui_collectionView registerClass:[RecipeCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView"];
//代码控制header和footer的显示
UICollectionViewFlowLayout *collectionViewLayout = (UICollectionViewFlowLayout *)_ui_collectionView.collectionViewLayout;
collectionViewLayout.headerReferenceSize = CGSizeMake(375, 50);
}
其中_ui_collectionView是:
@property (weak, nonatomic) IBOutlet UICollectionView *ui_collectionView;
。
说明(这部分说明可以参见xib设置sectionview):
当然要让上述代码起作用还要注册UICollectionReusableView的派生类(上述代码中的RecipeCollectionReusableView),还要实现:
- (UICollectionReusableView *) collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableview = nil;
if (kind == UICollectionElementKindSectionHeader)
{
RecipeCollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath];
reusableview = headerView;
}
// if (kind == UICollectionElementKindSectionFooter)
// {
// RecipeCollectionReusableView *footerview = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"FooterView" forIndexPath:indexPath];
//
// reusableview = footerview;
// }
reusableview.backgroundColor = [UIColor redColor];
return reusableview;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询