如何使用UICollectionView实现图像中显示的布局? 提前谢谢。
答案 0 :(得分:1)
第一: - 您必须为部分创建 UICollectionReusableView类: 例如:ReusableView.h
@interface ReusableView : UICollectionReusableView
@property (weak, nonatomic) IBOutlet UIImageView *headerImage; // example of header content
@end
ReusableView.m
@implementation ReusableView
- (void)awakeFromNib {
// Initialization code
}
@end
-in ReusableView.xib你必须删除默认视图并从ObjectLibrary中添加UICollectionReusableView,然后你添加你的图像或标签,或者在AttributeInspector中你必须写下你的IdentifierName标识符(你需要做同样的事情)对于细胞)
第二
您必须使用一些代理:UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout>
你必须从委托中使用这个方法,但首先在viewDidLoad方法中你必须实现这个:
[yourCollectionView registerNib:[UINib nibWithNibName:@"ReusableView" bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"CollectionReusable"]; //collection identifier is: @"CollectionReusable"
[yourCollectionView registerNib: [UINib nibWithNibName:@"CollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"CollectionCell"];
对于部分,您必须从委托实施此方法:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section
{
return CGSizeZero;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section; // here you return number of sections
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{ headerView = nil;
headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@“CollectionReusable”forIndexPath:indexPath];
[headerView.headerImage setImage:[UIImage imageNamed:[listOfSymbolsObjects objectAtIndex:indexPath.section]]];
return headerView;
}
- 对于单元,您必须从委托实现此方法:
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;
希望它对你有所帮助! :)