记一次UICollectionView中visibleCells的坑


项目的要求是这样的

其实也是一个轮播图,而已,所以依照轮播图的实现原理,这里觉得也很简单,还是利用UICollectionView,只不过自定义一个布局能够让cell自动吸附在最中间。

第一个坑

在下面的数组中取出当前出现在界面可视范围内的NSIndexPath,

NSArray *arr = [self.TFCollectionView indexPathsForVisibleItems];

然后遍历,取出最中间的NSIndexPath,取出他的item然后+1,就可以进入下次循环了。但是发现取出来的是

打印信息是 NSLog(@"-path-:%d-:%ld-:%ld",i,(long)path.section,(long)path.item);下同

2016-07-13 14:07:32.712 TFCycleScrollView[54025:1747068] -cell-:2-:51-:0
2016-07-13 14:07:32.713 TFCycleScrollView[54025:1747068] -path-:0-:51-:0
2016-07-13 14:07:32.713 TFCycleScrollView[54025:1747068] -path-:1-:51-:0
2016-07-13 14:07:32.713 TFCycleScrollView[54025:1747068] -path-:2-:51-:0

还有这样的

2016-07-13 14:07:30.716 TFCycleScrollView[54025:1747068] -path-:0-:50-:2
2016-07-13 14:07:30.716 TFCycleScrollView[54025:1747068] -path-:1-:50-:2
2016-07-13 14:07:30.717 TFCycleScrollView[54025:1747068] -path-:2-:50-:2

这里存在很大的坑啊,明明不一样的数据,为什么取出来,不过还有visibleCells,那这个可行吗。但是这也又让我遇到了第二个坑。

第二个坑

接下来我取出visibleCells并打印。

NSArray *arr = [self.TFCollectionView visibleCells];

然后遍历,但是发现取出来的是

2016-07-13 14:03:16.541 TFCycleScrollView[53987:1739752] -cell-:0-:50-:0
2016-07-13 14:03:16.541 TFCycleScrollView[53987:1739752] -cell-:1-:50-:2
2016-07-13 14:03:16.542 TFCycleScrollView[53987:1739752] -cell-:2-:50-:1

还有这样的

2016-07-13 14:03:53.626 TFCycleScrollView[53999:1741433] -cell-:0-:50-:3
2016-07-13 14:03:53.626 TFCycleScrollView[53999:1741433] -cell-:1-:51-:0
2016-07-13 14:03:53.627 TFCycleScrollView[53999:1741433] -cell-:2-:50-:4

也就是说indexPathsForVisibleItems是全部一样的,所以这个不可取,那么取visibleCells,取出来了,但是顺序又和实际的是不一样的,所以这样我就决定手动给排个序,然后取最中间的,这样就能满足需求了。

做法是这样的:

NSArray *visibleCellIndex = [self.TFCollectionView visibleCells];
NSArray *sortedIndexPaths = [visibleCellIndex sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSIndexPath *path1 = (NSIndexPath *)[self.TFCollectionView indexPathForCell:obj1];
NSIndexPath *path2 = (NSIndexPath *)[self.TFCollectionView indexPathForCell:obj2];
return [path1 compare:path2];
}];

这样返回后的数组就是排序后的数组,也是符合要去的。

Demo地址下载

参考

UICollectionView indexPathsForVisibleItems order

记一次UICollectionView中visibleCells的坑的更多相关文章

  1. Nancy总结(二)记一次Nancy 框架中遇到的坑

    记一次Nancy 框架中遇到的坑 前几天,公司一个项目运行很久的Nancy框架的网站,遇到了一个很诡异的问题.Session 对象跳转到另外一个页面的时候,session对象被清空了,导致用户登录不上 ...

  2. 记pytorch版faster rcnn配置运行中的一些坑

    记pytorch版faster rcnn配置运行中的一些坑 项目地址 https://github.com/jwyang/faster-rcnn.pytorch 一般安装配置参考README.md文件 ...

  3. 记前端状态管理库Akita中的一个坑

    记状态管理库Akita中的一个坑 Akita是什么 Akita是一种基于RxJS的状态管理模式,它采用Flux中的多个数据存储和Redux中的不可变更新的思想,以及流数据的概念,来创建可观察的数据存储 ...

  4. 记一次 Spring 事务配置踩坑记

    记一次 Spring 事务配置踩坑记 问题描述:(SpringBoot + MyBatisPlus) 业务逻辑伪代码如下.理论上,插入数据 t1 后,xxService.getXxx() 方法的查询条 ...

  5. Netty中的那些坑

    Netty中的那些坑(上篇) 最近开发了一个纯异步的redis客户端,算是比较深入的使用了一把netty.在使用过程中一边优化,一边解决各种坑.儿这些坑大部分基本上是Netty4对Netty3的改进部 ...

  6. maven build和push image中遇到的坑(学习过程记录)

    最近在做jenkins的持续集成构建,其中一项是要实现docker容器化部署.项目本身是maven项目,我对于maven和docker都没有什么认知基础,于是求助百度和官网,从头开始啃起.遇到了不少的 ...

  7. 整理iOS9适配中出现的坑(图文)

    原文: http://www.cnblogs.com/dsxniubility/p/4821184.html 整理iOS9适配中出现的坑(图文)   本文主要是说一些iOS9适配中出现的坑,如果只是要 ...

  8. 整理 iOS 9 适配中出现的坑(图文)(转)

    作者:董铂然 本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着 ...

  9. 整理 iOS 9 适配中出现的坑

    本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级 ...

随机推荐

  1. go语言的碎片整理:time

    时间和日期是我们编程中经常用到的,本文主要介绍了Go语言内置的time包的基本用法. Go语言中导入包 单行导入 import "time" import "fmt&qu ...

  2. Java学习笔记(1)-(GridBagLayout)网格袋布局

    学习JAVA-布局管理的时候,在书上看到了这么一段话:GridBagLayout的功能非常强大,使用是也比较复杂,考虑到一般的读者很少会使用到这种管理,这里不做介绍.然书本就跳过了,为什么功能强大却很 ...

  3. 算法导论 第十章 基本数据类型 & 第十一章 散列表(python)

    更多的理论细节可以用<数据结构>严蔚敏 看几遍,数据结构很重要是实现算法的很大一部分 下面主要谈谈python怎么实现 10.1 栈和队列 栈:后进先出LIFO 队列:先进先出FIFO p ...

  4. 发布tomcate时报A configuration error occurred during startup.please verify the preference field with the prompat:null

    发布tomcate时报A configuration error occurred during startup.please verify the preference field with the ...

  5. 局域网虚拟机端口映射访问apache

    如果我们在虚拟机内搭建好服务器后,希望可以在局域网内的设备上都能访问到这个虚拟服务器,就可以参照以下步骤来操作.其中包括了很多遇到的坑.先说说我的环境是 宿主机:windows 8.1 虚拟机:vmw ...

  6. 学渣乱搞系列之扩展KMP的那点事

    扩展KMP牵涉了一些相对运动的姿势,比较费解!本学渣看了一天的扩展KMP,打算写点东西...本文看后,出现的后果本人一概不负责.毕竟我不是很会表达. 扩展KMP是搞什么灰机的?本学渣所知道的扩展KMP ...

  7. POJ 2002 几何+hash

    题目大意: 给定1000个点,寻找有多少组四点对能组成正方形 这里的题目跟上一道做的找平行四边形类似但想法却又不相同的方法 这里找任意2个点形成的一条边,那么可以根据这两个点,找到能和他们组成正方形剩 ...

  8. bzoj 3772 精神污染 主席树+dfs序

    精神污染 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 637  Solved: 177[Submit][Status][Discuss] Descri ...

  9. 重写jQuery serialize方法,使文本框在没有输入的情况下,使用其支持默认值

    未压缩版 jQuery.fn.extend({ serialize:function() { return jQuery.param(this.serializeArray()); }, serial ...

  10. DNS Prefetch 【DNS 预解析技术】

    DNS 实现域名到IP的映射.通过域名访问站点,每次请求都要做DNS解析.目前每次DNS解析,通常在200ms以下.针对DNS解析耗时问题,一些浏览器通过DNS Prefetch 来提高访问的流畅性. ...