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

UI3_UICollectionViewMuti的更多相关文章

随机推荐

  1. DirectSound的应用

    假设仅仅使用PlaySound()这个API函数来表现声音效果的话,那么就无法表现出声音的混音效果,由于PlaySound在播放还有一个声音时,必定会导致现有声音的停止.因此,使用 PlaySound ...

  2. GlusterFS创建volume失败的解决方法(* or a prefix of it is already part of a volume)

    问题描写叙述: 之前已经创建了一个replicated的volume gv0,replica=2,两个文件夹为:/test/data1和/test/data2,之后发现这两个文件夹不太合适,想在/te ...

  3. [CSS] Introduction to CSS Columns

    Learn how to use CSS columns to quickly lay out fluid columns that are responsive, degrade gracefull ...

  4. vm.dirty_ratio & vm.dirty_background_ratio

    https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/ Better Lin ...

  5. CentOS安装某个命令的办法如locate

    在Linux使用命令时,有时候因为系统精简的原因,某些命令可能没有安装locate包,例如你要输入的命令是locate 发现没有该命令,修复办法如下: 一.使用如下命令查询缺失命令的包名 #yum l ...

  6. 动态引入Js文件

    var src = "/Scripts/Test.js"; $("<script type = 'text/javascript' src='" + sr ...

  7. Sql 之 sql中的强制类型转换

    1. convert(数据类型, 字段名) convert(datetime, startDate) 2. cast(字段名 as 数据类型) ,))

  8. java解析excel2003和excel2007:The supplied data appears to be in the office 2007+XML Polonly supports OLE2 office documents

    上传excel解析存到数据库时报: org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears ...

  9. DIH

    DIH内存溢出: 在使用DIH时,容易报内存溢出错误.可以通过设置jvm大小来解决.设置方法如下: 在tomcat\bin\startup.bat 加入SET JAVA_OPTS=-Xms128m - ...

  10. raspberry pi vpn

    http://raspberrypihelp.net/tutorials/1-openvpn-server-tutorialhttp://www.jacobsalmela.com/setting-up ...