// 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