UICollectionView标题不显示

我正在使用UICollectionView显示多个相册的项目。 项目显示正常,但现在我想在第一部分上方显示标题。

要做到这一点,我添加了registerNib:forSupplementaryViewOfKind:withReuseIdentifier:我的init方法。 喜欢这个:

 [self.collectionView registerNib:[UINib nibWithNibName:@"AlbumHeader" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kAlbumHeaderIdentifier]; 

AlbumHeader Nib包含类AlbumHeader的视图,它是UICollectionView的子类。)

之后,我实现了collectionView:viewForSupplementaryElementOfKind:atIndexPath方法:

 - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { return [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:kAlbumHeaderIdentifier forIndexPath:indexPath]; } 

现在它应该尝试加载标题视图,我想。 但它不,补充视图的方法不会被调用。

我错过了什么? 卡住了好几个小时,已经多次阅读了UICollectionView的文档,但似乎没有任何帮助。 有什么想法吗?

在寻找yuf问的方法后,我读了默认的页眉/页脚的大小是0,0。 如果大小为0,则不会显示页眉/页脚。

您可以设置一个属性的大小:

 flowLayout.headerReferenceSize = CGSizeMake(0, 100); 

那么所有的头文件将具有相同的大小。 如果每个部分必须有所不同,那么可以实现以下方法,这是UICollectionViewDelegateFlowLayout协议的一部分。

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section { if (section == albumSection) { return CGSizeMake(0, 100); } return CGSizeZero; } 

请注意,在垂直滚动中,它使用返回的height和集合视图的全部宽度,在水平滚动中,它使用集合视图的返回width和全高。

你执行了:

 - (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath 

有很多方法可以实现一件事情…我也学习。 告诉我,如果它的作品。

编辑:对不起错误的方法。 这是我认为子类化。 我正在谈论的是在UICollectionViewLayout (你的子类布局对象,如果你的布局支持补充意见):

 - layoutAttributesForSupplementaryViewOfKind:atIndexPath: 

看到这里: https : //developer.apple.com/library/ios/#documentation/UIKit/Reference/UICollectionViewLayout_class/Reference/Reference.html#//apple_ref/occ/cl/UICollectionViewLayout