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
UI3_UICollectionViewMuti的更多相关文章
随机推荐
- cocos2dx的图片载入
//data: 图片文件数据 dataLen: 文件长度 bool Image::initWithImageData(const unsigned char * data, ssize_t dataL ...
- 抛砖引玉:关于Android的ListView中CheckBox错乱
首先:参考了这篇翻译的文章:http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html 文章中关于说的Android中的Recyc ...
- java最简单的方式实现httpget和httppost请求
java实现httpget和httppost请求的方式多种多样,个人总结了一种最简单的方式,仅仅需几行代码,就能够完美的实现. 此处须要用到两个jar包,httpclient-4.3.1.jar.ht ...
- uva 12096 The SetStack Computer
点击打开链接uva 12096 思路: STL模拟 分析: 1 题目给定5种操作,每次输出栈顶集合的元素的个数 2 利用stack和set来模拟,set保存集合的元素.遇到push的时候直接在stac ...
- Linux中/usr与/var目录详解
/usr文件系统 /usr 文件系统经常很大,因为所有程序安装在这里. /usr 里的所有文件一般来自Linux distribution:本地安装的程序和其他东西在/usr/local 下.这样可能 ...
- LeetCode20 Valid Parentheses
题意: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the ...
- 开发工具 之 PowerDesigner
PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一.Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesign ...
- .net 后台获取当前请求的设备
检查当前发起请求的设备是手持设备还是电脑端 以便显示不同的视图 public static bool CheckIsMobile(HttpRequestBase req) { bool flag = ...
- 【源码】初探C#爬虫,持续更新中。。。
最近看到园子里有人用python做的爬虫软件并且上传的源码,苦于不懂python,便想着用C#也实现一个简易的爬虫软件.于是昨晚花了一个多小时的时间实现了一个简单的爬虫软件,功能十分简单,但是觉 ...
- [Java] HashMap遍历的两种方式
Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml第一种: Map map = new HashMap( ...