// ProfileViewController.m
// scxhgh
// Created by xmkjsoft on 2024/7/16.
#import "ProfileViewController.h"
@interface ProfileViewController () <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
@property (nonatomic, strong) UICollectionView *collectionView; // 声明UICollectionView属性
@end
@implementation ProfileViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 设置背景色
self.view.backgroundColor = [UIColor whiteColor];
// 创建并设置UICollectionView
[self setupCollectionView];
}
- (void)setupCollectionView {
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.itemSize = CGSizeMake(100, 100); // 设置每个cell的大小
layout.minimumLineSpacing = 10; // 设置行间距
layout.minimumInteritemSpacing = 10; // 设置列间距
layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10); // 设置section的内边距
// 设置header的大小
layout.headerReferenceSize = CGSizeMake(self.view.frame.size.width, 50);
// 设置footer的大小
layout.footerReferenceSize = CGSizeMake(self.view.frame.size.width, 50);
self.collectionView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:layout];
self.collectionView.dataSource = self;
self.collectionView.delegate = self;
self.collectionView.backgroundColor = [UIColor whiteColor];
// 注册cell类
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"];
// 注册header类
[self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"headerIdentifier"];
// 注册footer类
[self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footerIdentifier"];
[self.view addSubview:self.collectionView];
}
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"headerIdentifier" forIndexPath:indexPath];
// 移除之前的所有子视图,避免复用问题
[headerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
// 添加一个UILabel到headerView
UILabel *titleLabel = [[UILabel alloc] initWithFrame:headerView.bounds];
titleLabel.text = @"这是Header";
titleLabel.textAlignment = NSTextAlignmentCenter;
titleLabel.textColor = [UIColor blackColor];
[headerView addSubview:titleLabel];
return headerView;
} else if ([kind isEqualToString:UICollectionElementKindSectionFooter]) {
UICollectionReusableView *footerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footerIdentifier" forIndexPath:indexPath];
// 移除之前的所有子视图,避免复用问题
[footerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
// 添加一个UILabel到footerView
UILabel *footerLabel = [[UILabel alloc] initWithFrame:footerView.bounds];
footerLabel.text = @"这是Footer";
footerLabel.textAlignment = NSTextAlignmentCenter;
footerLabel.textColor = [UIColor grayColor];
[footerView addSubview:footerLabel];
return footerView;
}
return nil;
}
#pragma mark - UICollectionViewDataSource
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1; // 返回section的数量
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 5; // 返回每个section中item的数量
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
cell.backgroundColor = [UIColor systemBlueColor]; // 设置cell的背景色
// 可以在这里添加更多的自定义内容,比如在cell上添加一个UILabel
UILabel *label = [[UILabel alloc] initWithFrame:cell.contentView.bounds];
label.text = [NSString stringWithFormat:@"%ld", (long)indexPath.row];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
[cell.contentView addSubview:label];
return cell;
}
#pragma mark - UICollectionViewDelegateFlowLayout
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
// 设置列数
NSInteger numberOfColumns = 5;
// 获取当前屏幕的宽度
CGFloat totalWidth = collectionView.bounds.size.width;
// 设置section的内边距(与layout.sectionInset一致)
CGFloat sectionInset = 10.0;
// 设置item之间的最小列间距(与layout.minimumInteritemSpacing一致)
CGFloat minimumInteritemSpacing = 10.0;
// 计算item的宽度
CGFloat itemWidth = (totalWidth - (sectionInset * 2) - ((numberOfColumns - 1) * minimumInteritemSpacing)) / numberOfColumns;
// 返回item的大小
return CGSizeMake(itemWidth, itemWidth);
}
@end