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