我有一个包含CollectionView的ViewController:
- (void)viewDidLoad
{
UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout new];
collectionview = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout];
collectionview.backgroundColor = [UIColor colorWithRed:0.86 green:0.86 blue:0.86 alpha:1.0];
collectionview.translatesAutoresizingMaskIntoConstraints = false;
collectionview.delegate = self;
collectionview.dataSource = self;
collectionview.bounces = true;
[collectionview registerClass:[CollectionViewCell1 class] forCellWithReuseIdentifier:@"cell1"];
[self.view addSubview:collectionview];
[collectionview sdc_alignEdgesWithSuperview:UIRectEdgeAll];
[collectionview registerClass:[RecipeCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView"];
}
-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableview = nil;
RecipeCollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath];
headerView.backgroundColor = [UIColor greenColor];
headerView.title.text = @"ABC";
reusableview = headerView;
return reusableview;
}
和RecipeCollectionReusableView是:
- (void)initialize
{
_title = [UILabel new];
_title.translatesAutoresizingMaskIntoConstraints = false;
[self addSubview:_title];
[_title sdc_centerInSuperview];
}
但运行后屏幕上没有任何标题。
答案 0 :(得分:1)
您是否为标题执行了必要的实现?
<强>的CollectionView:布局:referenceSizeForHeaderInSection:强>
返回值 标题的大小。如果返回size(0,0)的值,则不添加标头。
<强>讨论强> 如果未实现此方法,则流布局将使用其中的值 headerReferenceSize 用于设置标题大小的属性。 在布局期间,仅使用对应于适当滚动方向的大小。例如,对于垂直滚动方向,布局对象使用方法返回的高度值。 (在该实例中,标题的宽度将设置为集合视图的宽度。)如果相应滚动维度中的大小为0,则不添加标题。
答案 1 :(得分:0)
这篇文章完全帮助了我: