博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UICollectionViewFlowLayout使用示例
阅读量:6654 次
发布时间:2019-06-25

本文共 6896 字,大约阅读时间需要 22 分钟。

UICollectionViewFlowLayout使用示例

 

效果

 

源码

////  ViewController.m//  LayoutViewController////  Created by YouXianMing on 16/5/3.//  Copyright © 2016年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "UIView+SetRect.h"#import "RootModel.h"#import "FlowStyleCell.h"#import "CollectionHeaderView.h"#import "CollectionBottomView.h"@interface ViewController () 
@property (nonatomic, strong) RootModel *rootModel;@property (nonatomic, strong) UICollectionView *collectionView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; [self createDataSource]; [self createCollectionView];}#pragma mark - Create data source.- (void)createDataSource { NSDictionary *datas = @{
@"response" : @YES, @"datas" : @[@{
@"title" : @"Header1", @"subTitle" : @"Bottom1", @"infos" : @[@{
@"name" : @"1"}, @{
@"name" : @"2"}, @{
@"name" : @"3"}, @{
@"name" : @"4"}, @{
@"name" : @"5"}, @{
@"name" : @"6"}, @{
@"name" : @"7"}, @{
@"name" : @"8"}, @{
@"name" : @"9"}]}, @{
@"title" : @"Header2", @"subTitle" : @"Bottom2", @"infos" : @[@{
@"name" : @"1"}, @{
@"name" : @"2"}, @{
@"name" : @"3"}, @{
@"name" : @"4"}, @{
@"name" : @"5"}, @{
@"name" : @"6"}]}, @{
@"title" : @"Header3", @"subTitle" : @"Bottom3", @"infos" : @[@{
@"name" : @"1"}, @{
@"name" : @"2"}, @{
@"name" : @"3"}, @{
@"name" : @"4"}, @{
@"name" : @"5"}, @{
@"name" : @"6"}, @{
@"name" : @"7"}, @{
@"name" : @"8"}]}]}; self.rootModel = [[RootModel alloc] initWithDictionary:datas];}#pragma mark - Create UICollectionView.- (void)createCollectionView { self.view.backgroundColor = [UIColor whiteColor]; // Setup UICollectionViewFlowLayout. UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout new]; layout.itemSize = CGSizeMake(90, 120); layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); layout.minimumInteritemSpacing = 10.f; // 横向排列最小间距 layout.minimumLineSpacing = 5.0f; // 纵向排列最小间距 // Init UICollectionView. self.collectionView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:layout]; self.collectionView.backgroundColor = [UIColor clearColor]; self.collectionView.delegate = self; self.collectionView.dataSource = self; // Register CollectionHeaderView & CollectionBottomView. [self.collectionView registerClass:[FlowStyleCell class] forCellWithReuseIdentifier:@"FlowStyleCell"]; [self.collectionView registerClass:[CollectionHeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"CollectionHeaderView"]; [self.collectionView registerClass:[CollectionBottomView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"CollectionBottomView"]; [self.view addSubview:self.collectionView];}#pragma mark - UICollectionView's delegate & dataSource.- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { DatasModel *dataModel = self.rootModel.datas[section]; return dataModel.infos.count;}- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return self.rootModel.datas.count;}- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { DatasModel *dataModel = self.rootModel.datas[indexPath.section]; InfoModel *infoModel = dataModel.infos[indexPath.row]; FlowStyleCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"FlowStyleCell" forIndexPath:indexPath]; cell.data = infoModel; cell.indexPath = indexPath; [cell loadContent]; return cell;}- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { CustomCollectionReusableView *reusableView = nil; if ([kind isEqualToString:UICollectionElementKindSectionHeader]) { reusableView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"CollectionHeaderView" forIndexPath:indexPath]; DatasModel *dataModel = self.rootModel.datas[indexPath.section]; reusableView.data = dataModel; reusableView.indexPath = indexPath; [reusableView loadContent]; } else if ([kind isEqualToString:UICollectionElementKindSectionFooter]) { reusableView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"CollectionBottomView" forIndexPath:indexPath]; DatasModel *dataModel = self.rootModel.datas[indexPath.section]; reusableView.data = dataModel; reusableView.indexPath = indexPath; [reusableView loadContent]; } return reusableView;}#pragma mark - UICollectionViewDelegateFlowLayout.- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section { // If you have headerView, you must implement this method. return CGSizeMake(Width, 30);}- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section { // If you have footerView, you must implement this method. return CGSizeMake(Width, 40);}#pragma mark - Hide statusBar.- (BOOL)prefersStatusBarHidden { return YES;}@end

 

细节

itemSize的含义

minimumLineSpacing的含义

minimunInteritemSpacing的用途

 

转载地址:http://udxto.baihongyu.com/

你可能感兴趣的文章
(转)virtualbox 与宿主交换剪贴板的问题
查看>>
我的友情链接
查看>>
Minimum Transport Cost (floyd算法)
查看>>
我的友情链接
查看>>
设计模式-桥接模式
查看>>
WebDAV
查看>>
Spring AOP 切点(pointcut)表达式
查看>>
Windows 桌面程序隐藏最小化、关闭按钮
查看>>
iis发布的C#项目设置首页
查看>>
教你让Word文档隐身
查看>>
wamp简单应用
查看>>
Cocos2dx面向对象编程介绍
查看>>
MySQL存储过程SP详解
查看>>
power Designer连接 MySQL数据库逆向工程
查看>>
交叉编译 configure 常见参数含义
查看>>
UICollectionView/ UITableView选中某一组的一个cell,其它cell不选中处理
查看>>
杨泽业:解决wordpress博客建立数据库连接时出错的问题
查看>>
关于安卓的退出
查看>>
Adaboost
查看>>
nodejs 中如何使用log4js
查看>>