#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

collectionview cell吸顶效果的更多相关文章

  1. 自定义tab吸顶效果一(原理)

    PS:问题:什么是吸顶,吸顶有什么作用,吸顶怎么使用? 在很多app商城中,介绍软件的时候就会使用吸顶效果, 吸顶有很多作用,一个最简单粗暴的作用就是,让用户知道此刻在浏览哪个模块,并可以选择另外的模 ...

  2. Html吸顶效果

    Html吸顶效果 一.HTML HTML中需要给div一个id <!DOCTYPE html> <html lang="en"> <head> ...

  3. 基于scroll的吸顶效果

    本次要实现的是一种常见的网页效果,如下: 页面由头部,导航,主体内容三部分组成,当页面发生滚动时,头部逐渐隐藏,导航部分向上移动,直到导航部分距离浏览器顶部为零时,导航部分固定不动,保持吸顶效果,如下 ...

  4. better-scroll之吸顶效果巨坑挣扎中

    今天和大家分享下better-scroll这款移动端用来解决各种滚动需求的插件(目前已经支持PC) 关于其中的API大家可以去官网看下  这里就给大家介绍几种常用的以及需要注意的点是什么 首先说一下b ...

  5. js之吸顶效果

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. react.js中实现tab吸顶效果问题

    在react项目开发中有一个需求是,页面滚动到tab所在位置时,tab要固定在顶部. 实现的思路其实很简单,就是判断当滚动距离scrollTop大于tab距离页面顶部距离offsetTop时,将tab ...

  7. [RN] React Native 头部 滑动吸顶效果的实现

    React Native 头部 滑动吸顶效果的实现 效果如下图所示: 实现方法: 一.吸顶组件封装 StickyHeader .js import * as React from 'react'; i ...

  8. Vue 事件监听实现导航栏吸顶效果(页面滚动后定位)

    Vue 事件监听实现导航栏吸顶效果(页面滚动后定位) Howie126313 关注 2017.11.19 15:05* 字数 100 阅读 3154评论 0喜欢 0 所说的吸顶效果就是在页面没有滑动之 ...

  9. js 实现吸顶效果 || 小程序的吸顶效果

    小程序吸顶效果 <!--index.wxml--> <view class="container"> <view class='outside-img ...

随机推荐

  1. Learn GIT

    1.创建版本库: git init 设置用户: git config --global user.email "you@example.com" 2.添加到仓库(将修改的内容提交到 ...

  2. python 最小公倍数

    最小公倍数 求解两个整数(不能是负数)的最小公倍数 方法一:穷举法 def LCM(m, n): if m*n == 0: return 0 if m > n: lcm = m else: lc ...

  3. Linux就该这么学

    第三章:Vim编辑器与Shell脚本 Vim文本编辑器 在Linux系统中配置应用服务,实际上就是在修改它的配置文件. 在热门的Linux操作系统中都会默认安装一款超好用的文本编辑器--"v ...

  4. 安卓CPU性能测试

      步骤1.adb shell (进入linux的底层) 步骤2.echo 3>/proc/sys/vm/drop_caches(清除系统cache) 步骤3.top -d 1|grep com ...

  5. React之JSX

    0.对于学习React,我们先来熟悉下JSX的语法, 下面的这些语法仅用于构建一个组件的标签模块,定义完成之后如果需要做演示,请附加以下代码: ReactDOM.render( element1, d ...

  6. UVA Open Credit System Uva 11078

    题目大意:给长度N的A1.....An 求(Ai-Aj)MAX 枚举n^2 其实动态维护最大值就好了 #include<iostream> #include<cstdio> u ...

  7. servlet获取表单数据的方式和编码方式

    .在servlet中获取表单的数据的几种方式  1>request.getParameter(“name”)://获取指定名称的值,返回值类型是一个字符串  2>request.getPa ...

  8. [地图SkyLine二次开发]框架(5)完结篇

    上节讲到,将菜单悬浮到地图上面,而且任何操作都不会让地图把菜单盖住. 这节带大家,具体开发一个简单的功能,来了进一步了解,这个框架. 1.想菜单中添加按钮 -上节定义的mainLayout.js文件里 ...

  9. position absolute 绝对定位 设置问题

     今天在做布局的时候,用到了绝对定位, 父级元素相对定位,子元素两个,一个元素正常文档流布局并且在前面,另一个元素绝对定位排在后面,但设置了好久,绝对定位的子元素都不会覆盖其上面的兄弟元素,最后,不知 ...

  10. Android UiAutomator快速调试

    在测试类中添加主函数 public static void main(String[] args){ String jarName,testClass, testName,androidId; jar ...