// AppDelegate.m // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import "AppDelegate.h" #import "ViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. ViewController *root = [[ViewController alloc] init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root]; self.window.rootViewController = nav; self.window.backgroundColor = [UIColor whiteColor]; return YES; }
// ViewController.h // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController @end // // ViewController.m // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import "ViewController.h" #import "DataModel.h" #import "HeaderCollectionReusableView.h" #import "FooterCollectionReusableView.h" #import "DataCollectionViewCell.h" #define kCellReuseID @"cellId" #define kHeaderReuseID @"headerId" #define kFooterReuseId @"footerId" //UICollectionViewDelegateFlowLayout 遵守 UICollectionViewDelegate @interface ViewController () <UICollectionViewDelegateFlowLayout,UICollectionViewDataSource> { UICollectionView *_collectionView; NSMutableArray *_dataList; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //创建数据源 [self createDatadList]; //创建UI [self createUI]; //代理 } - (void)createDatadList { _dataList = [NSMutableArray array]; for (int i=0; i<4; i++) { NSMutableArray *array = [NSMutableArray array]; for (int j=0; j<5; j++) { NSString *name = [NSString stringWithFormat:@"picture%d",i*5+j]; NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"png"]; DataModel *model = [[DataModel alloc] init]; model.title = [NSString stringWithFormat:@"图片%d",i*5+j]; model.image = [UIImage imageWithContentsOfFile:path]; [array addObject:model]; } [_dataList addObject:array]; } } - (void)createUI { UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; _collectionView = [[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout]; _collectionView.backgroundColor = [UIColor whiteColor]; //注册cell [_collectionView registerClass:[DataCollectionViewCell class] forCellWithReuseIdentifier:kCellReuseID]; //注册headerView footerView //注册headerView //UICollectionElementKindSectionHeader headerView 类型 [_collectionView registerClass:[HeaderCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kHeaderReuseID]; //注册footerView [_collectionView registerClass:[FooterCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:kFooterReuseId]; //设置代理 _collectionView.delegate = self; _collectionView.dataSource = self; [self.view addSubview:_collectionView]; } #pragma mark ---UICollectionViewDataSource--- //返回分区的个数 - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return _dataList.count; } //返回cell的个数 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return [_dataList[section] count]; } //返回cell - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { DataCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kCellReuseID forIndexPath:indexPath]; DataModel *model = [[_dataList objectAtIndex:indexPath.section] objectAtIndex:indexPath.item]; [cell config:model]; return cell; } #pragma mark ---UICollectionViewDelegateFlowLayout--- //返回cell的大小 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGSizeMake(150, 120); } //返回上下左右边距 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { return UIEdgeInsetsMake(10, 5, 10, 5); } //返回竖向的间距 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { return 20; } //返回横向的间距 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { return 5; } //获取headerView footerView - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { //headerView if (kind == UICollectionElementKindSectionHeader) { HeaderCollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:kHeaderReuseID forIndexPath:indexPath]; headerView.titleLabel.text = [NSString stringWithFormat:@"第%ld分区", indexPath.section]; headerView.titleLabel.textAlignment = NSTextAlignmentCenter; headerView.imageView.image = [UIImage imageNamed:@"headerImage.png"]; headerView.backgroundColor = [UIColor yellowColor]; return headerView; }//footerView else if(kind == UICollectionElementKindSectionFooter) { FooterCollectionReusableView *footerView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:kFooterReuseId forIndexPath:indexPath]; footerView.imageView.image = [UIImage imageNamed:@"footerImage@2x"]; return footerView; } return nil; } //返回headerView大小 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section { return CGSizeMake(375, 44); } //返回footerView的大小 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section { return CGSizeMake(375, 44); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
// HeaderUICollectionReusableView.h // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <UIKit/UIKit.h> @interface HeaderCollectionReusableView : UICollectionReusableView //{ // UILabel *_titleLabel; // UIImageView *_imageView; //} @property (nonatomic, retain)UILabel *titleLabel; @property (nonatomic, retain)UIImageView *imageView; @end // // HeaderUICollectionReusableView.m // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import "HeaderCollectionReusableView.h" @implementation HeaderCollectionReusableView //重写HeaderCell - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { _titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 44)]; _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(300, 0, 44, 44)]; [self addSubview:_titleLabel]; [self addSubview:_imageView]; } return self; } @end
// FooterCollectionReusableView.h // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <UIKit/UIKit.h> @interface FooterCollectionReusableView : UICollectionReusableView //{ // UIImageView *_imageView; //} @property (nonatomic, retain)UIImageView *imageView; @end // FooterCollectionReusableView.m // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import "FooterCollectionReusableView.h" @implementation FooterCollectionReusableView //重写FooterCell - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(00, 0, 375, 44)]; [self addSubview:_imageView]; } return self; } @end
// DataCollectionViewCell.h // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <UIKit/UIKit.h> #import "DataModel.h" @interface DataCollectionViewCell : UICollectionViewCell { UILabel *_titleLabel; UIImageView *_imageView; } //显示模型数据 - (void)config:(DataModel *)model; @end // // DataCollectionViewCell.m // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import "DataCollectionViewCell.h" @implementation DataCollectionViewCell - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { _titleLabel = [[UILabel alloc] init]; _imageView = [[UIImageView alloc] init]; [self addSubview:_imageView]; [_imageView addSubview:_titleLabel]; } return self; } //显示数据 - (void)config:(DataModel *)model { _titleLabel.frame = CGRectMake(0, 0, 150, 30); _imageView.frame = CGRectMake(0, 0, 150, 100); _titleLabel.textAlignment = NSTextAlignmentCenter; _titleLabel.backgroundColor = [UIColor grayColor]; _titleLabel.alpha = 0.5; _titleLabel.textColor = [UIColor greenColor]; _titleLabel.text = model.title; _imageView.image = model.image; } @end
// DataModel.h // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface DataModel : NSObject @property (nonatomic,copy) NSString *title; @property (nonatomic,strong) UIImage *image; @end // DataModel.m // UI3_UICollectionViewMuti // // Created by zhangxueming on 15/7/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import "DataModel.h" @implementation DataModel @end