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