博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义UICollectionViewLayout(适用于多个section)
阅读量:6546 次
发布时间:2019-06-24

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

一、自定义layout主要方法

  重写系统的- (void)prepareLayout  方法;

  其实就是计算每个cell的frame和其它相关属性。

  

 

 二、在网上看了好多自定义的layout 但是没有多section的,就整了这个……

  全部代码:

.h文件
@class ForeverGuardFlowLayout;@protocol ForeverGuardFlowLayoutDelegate 
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(ForeverGuardFlowLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;@end@interface ForeverGuardFlowLayout : UICollectionViewFlowLayout@property(nonatomic, assign)NSUInteger numberOfColumn;//列数@property(nonatomic, assign)id
delegate;@end

  

1 @interface ForeverGuardFlowLayout()  2 //存放每一列的高度  3 @property (nonatomic, retain) NSMutableArray *columnHeightsArray;  4   5 //每个section的每一列的高度  6 @property (nonatomic, retain) NSMutableArray *collectionHeightsArray;  7   8 //存放每一个cell的属性  9 @property (nonatomic, retain) NSMutableArray *attributesArray; 10  11  12 @end 13 @implementation  ForeverGuardFlowLayout 14  15  16 /** 17  每个区的最小高度 18  19  @param section 区索引 20  @return 高度 21  */ 22 - (CGFloat)minHeightWithSection:(NSInteger)section{ 23     CGFloat min = 1000000; 24     for (NSNumber *height in _collectionHeightsArray[section]) { 25         if (min > [height floatValue]) { 26             min = [height floatValue]; 27         } 28     } 29     return min; 30 } 31  32  33 /** 34  每个区的初始Y坐标 35  36  @param section 区索引 37  @return Y坐标 38  */ 39 - (CGFloat)maxHeightWithSection:(NSInteger)section{ 40      41     if (section>0) { 42         CGFloat max = 0; 43         for (int i=0; i
*)layoutAttributesForElementsInRect:(CGRect)rect{182 return _attributesArray;183 }184 @end
.m文件
@interface ForeverGuardFlowLayout()//存放每一列的高度@property (nonatomic, retain) NSMutableArray *columnHeightsArray;//每个section的每一列的高度@property (nonatomic, retain) NSMutableArray *collectionHeightsArray;//存放每一个cell的属性@property (nonatomic, retain) NSMutableArray *attributesArray;@end@implementation  ForeverGuardFlowLayout/** 每个区的最小高度  @param section 区索引 @return 高度 */- (CGFloat)minHeightWithSection:(NSInteger)section{    CGFloat min = 1000000;    for (NSNumber *height in _collectionHeightsArray[section]) {        if (min > [height floatValue]) {            min = [height floatValue];        }    }    return min;}/** 每个区的初始Y坐标  @param section 区索引 @return Y坐标 */- (CGFloat)maxHeightWithSection:(NSInteger)section{        if (section>0) {        CGFloat max = 0;        for (int i=0; i
*)layoutAttributesForElementsInRect:(CGRect)rect{ return _attributesArray;}@end

 

转载于:https://www.cnblogs.com/xianfeng-zhang/p/6401117.html

你可能感兴趣的文章
shell基础之管道符和变量
查看>>
python_备份mysql数据库
查看>>
[UNIX环境高级编程]apue.h头文件的配置
查看>>
linux nagios hist_dat_root__32 Error with user uid=517(nagios) gid=517(nagios) groups=517(nagios)
查看>>
【Python】从0开始写爬虫——扒一下狗东
查看>>
sql server 查询某个表被哪些存储过程调用
查看>>
正则表达式基础知识整理
查看>>
一种简单的对象赋值方法,定义实例后以{}赋值,比传统方法更简洁
查看>>
(2)java程序走一遍工作流activiti
查看>>
JQuery学习入门之AJAX
查看>>
Codeforces #426(div2)
查看>>
hdu - 4506 小明系列故事——师兄帮帮忙 【快速幂】
查看>>
面试--百度网页搜索部二面总结
查看>>
浮点运算的优化
查看>>
杭电4883--TIANKENG’s restaurant(区间覆盖)
查看>>
基于MQTT协议谈谈物联网开发
查看>>
gradle使用方法
查看>>
HTML5初学---坦克大战基础
查看>>
Solr增量更新索引
查看>>
web页面播放优酷视频,播放html5视频,兼容ie7 vcastr22.swf播放
查看>>