#import "MyFlowLayout.h"

@implementation MyFlowLayout

#define kWidth self.collectionView.frame.size.width

- (instancetype)init

{

if (self = [super init]) {

// 设置item估计值

self.estimatedItemSize = CGSizeMake(300, 100);

// 全局配置item尺寸,单独定义调用协议方法[sizeForItemAtIndexPath]

self.itemSize = CGSizeMake(300, 100);

// 全局配置每行之间的间距,单独定义可调用协议方法[minimumLineSpacingForSectionAtIndex]

self.minimumLineSpacing = 10;

// 全局配置每行内部item的间距,单独定义可调用协议方法[minimumInteritemSpacingForSectionAtIndex]

self.minimumInteritemSpacing = 0;

// 设置滚动方向

// UICollectionViewScrollDirectionVertical

// UICollectionViewScrollDirectionHorizontal

self.scrollDirection = UICollectionViewScrollDirectionVertical;

// 设置是否当元素超出屏幕之后固定头部视图位置,默认NO;

self.sectionHeadersPinToVisibleBounds = YES;

// 设置是否当元素超出屏幕之后固定尾部视图位置,默认NO;

self.sectionFootersPinToVisibleBounds = YES;

}

return self;

}

- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect

{

// 拿到可见区域布局属性

NSArray *arr = [super layoutAttributesForElementsInRect:rect];

// 处理当前可见区内的布局属性吸顶

[arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

[self recomputeCellAttribute:obj];

}];

return arr;

}

- (void)recomputeCellAttribute:(UICollectionViewLayoutAttributes *)attrib

{

// 获得悬停的Y值

CGFloat minY = CGRectGetMinY(self.collectionView.bounds) + self.collectionView.contentInset.top;

//拿到布局属性应该出现的位置

CGFloat finalY = MAX(minY, attrib.frame.origin.y);

CGPoint point = attrib.frame.origin;

point.y = finalY;

attrib.frame = (CGRect){point,attrib.frame.size};

//根据IndexPath设置zIndex能确立顶部悬停的cell被后来的cell覆盖的层级关系

attrib.zIndex = attrib.indexPath.row;

}

- (NSArray<NSString *>*)arrStr

{

return @[@"f",@1];

}

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds

{

return YES;

}

@end

最新文章

  1. Navsion二次开发_学习笔记
  2. LintCode Palindrome Partitioning II
  3. Hibernate映射一对多双向关联关系及部门关联属性
  4. JQuery 对 Select option 的操作---转载
  5. 剑指 offer set 2 从头到尾打印链表
  6. 简单的doc命令
  7. Learn Docker
  8. BNU10792:沙漠旅行者
  9. c#基于这些,你已经看到了?(一)-----谁才刚刚开始学习使用
  10. 写一个类时什么时候需要重写toString
  11. 跟我一起读postgresql源码(九)——Executor(查询执行模块之——Scan节点(上))
  12. CSS3之box-shadow
  13. 剑指Offer-平衡二叉树
  14. D7 割点 割边 强连通分量
  15. %SystemRoot%
  16. 潭州课堂25班:Ph201805201 爬虫基础 第十五课 js破解 二 (课堂笔记)
  17. 硬盘内部硬件结构和工作原理详解[zz]
  18. 6个监控linux资源的快速工具
  19. CentOS6.5下Ambari安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)
  20. Median of Two Sorted Array leetcode java

热门文章

  1. inline-boock的默认间距
  2. php-sql-parser sql防注入脚本
  3. github项目配置
  4. log4j PatternLayout 输出解析
  5. SQL DDL
  6. 关于如何使用Identity的文献
  7. 滴滴快车,安全把你带到凡科安全知识h5大赛
  8. linux命令格式及基础命令(一)
  9. cf #379div2
  10. 苹果MacBook Air安装win7