• 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
    
  • 相关阅读:
    Arcgis Android 常见问题
    Arcgis Android 手动搭建开发环境
    Arcgis Android 坐标转换
    ArcGis Android 10.2.6更新文档翻译
    arcgis android 中shapefile的加载
    arcgis android 10.2.5开发环境配置
    so far so good
    做什么都要坚持,写blog也一样,
    WPF前台数据验证(红框)Validation.ErrorTemplate 附加属性
    WOSA/XFS及SP综述
  • 原文地址:https://www.cnblogs.com/0515offer/p/4652483.html
Copyright © 2020-2023  润新知