UI3_UICollectionViewMuti

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

 

你可能感兴趣的:(Collection)