判断tableViewCell是否在可视区
1、- (NSArray *)visibleCells;
UITableview 的方法,这个最直接,返回一个UITableviewcell的数组。
对于自定义的cell,之后的处理可能会稍微复杂。
2、-(NSArray*)indexPathsForVisibleRows;
UITableview的又一个方法,这个比较好用,返回一个indexPath的数组,可以直接indexpath.row去调用你的table_related_array里的数据了。比较方便用于自定制的cell.
3、-(CGRect)rectForRowAtIndexPath:(NSIndexPath*)indexPath;
//找出indexPath为index对应的cell在myTV这个tableView里的rect
CGRect cellR = [myTV rectForRowAtIndexPath:index];
如果myTV.contentOffset - cellR.origin.y < myCll.frame.size.height;
或者cellR.origin.y - myTV.contentOffset.y > myTV.size.height;
这个时候myCell应该不在myTV的可视区域了
这个方法可以用在代理回调较多的设计中。
、、
1、2在自动根据数据伸长的cell中好像不太准确、
删除UITableviewCell时,如何知道最后一个cell显示在了屏幕上面。如果一个屏幕10个cell,删除了两个。最后一个cell出现在了屏幕上,需要
自动加载更多数据。
如果cell大小固定。数据源数量 小于 屏幕高度除以cell高。这时可以继续加载。
如果cell大小根据内容自动变化。(cell高度动态变化)
//数据源数组
NSArray *dataArray = nil;
//获取最后一个cell对象
UITableViewCell *cell = self.tableView.visibleCells.lastObject;
//获取最后一个cell的indexPath
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
//获取指定(最后)一个cell的rect
CGRect rect = [self.tableView rectForRowAtIndexPath:indexPath];
CGFloat lastCellBottom = rect.origin.y = rect.size.height;
id lastModel = dataArray.lastObject;
id model = dataArray[indexPath.row];
//保证是最后一个cell
if(model == lastModel){
if(lastCellBottom < self.tableView.frame.size.height){
NSLog(@"加载数据");
}
}
判断tableViewCell是否在可视区的更多相关文章
- 原生js如何判断元素出现在可视区
元素出现在可视区 scorll滑动的距离>=当前元素距离浏览器最顶端的高度+当前元素自身的高度-当前可视区的高度 触底 scorll滑动的距离>=当前scroll总高度-当前可视区的高度
- jQuery判断元素是否在可视区
假设此元素为 #item,先说几个关键的属性: $('#item').offset().top#item 的绝对偏移量,指#item的实际尺寸(即不包括外边框margin)的上边界到页面顶端的距离.这 ...
- jquery判断元素是否出现在可视区
在我们的日常开发中,经常会遇到当元素出现在可视区的时候需要去出发某一事件的情况.我最近在优化环球网首页的时候,将非可视区的代码全部放入到webComponent中.打算当这个元素出现在可视区的时候 ...
- tableview的cell点击和取消
#pragma mark - 选择cell: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPa ...
- jquery远程班备忘
基础第一课: 1. $(obj)获取的是一个集合,因此length最小是1, jquery,如果元素不存在,也不会报错,可通过$(obj).length<1就可以查看该元素是否存在. 2. at ...
- JS/jQ常用宽高及应用
关于js的宽高,随便一搜就是一大堆.这个一大堆对我来说可不是什么好事,看的头都大了.所以今天就总结了一些比较会常用的,并说明一下应用场景. 先来扯一下documentElement和body的微妙关系 ...
- Vue图片懒加载插件
图片懒加载是一个很常用的功能,特别是一些电商平台,这对性能优化至关重要.今天就用vue来实现一个图片懒加载的插件. 这篇博客采用"三步走"战略--Vue.use().Vue.dir ...
- pv与单广告位曝光统计优化
上一篇文章<巧用域名发散,缓解单广告位并发请求限制>中提到了我已经将广告的数据请求写成了单广告位请求.既然数据请求都已经是单广告位的了,那么曝光统计也理所应当是单广告位的. pv是什么? ...
- 前端如何实现图片懒加载(lazyload) 提高用户体验
定义 图片懒加载又称图片延时加载.惰性加载,即在用户需要使用图片的时候加载,这样可以减少请求,节省带宽,提高页面加载速度,相对的,也能减少服务器压力. 惰性加载是程序人性化的一种体现,提高用户体验,防 ...
随机推荐
- MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes
今天在用Navicat导入SQL文件时报错:MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes ...
- Python对象(下)
前面一篇文章介绍了一些Python对象的基本概念,这篇接着来看看Python对象相关的一些内容. Python对象的比较 Python对象有三个要素:身份,类型和值,所以我们就分别从这三个角度出发看看 ...
- backbone学习笔记:集合(Collection)
集合(Collection)是一个Backbone对象,用来组织和管理多个模型,它不仅仅是一个javascript数组,还提供了专门的方法来对集合进行排序.过滤和遍历,集合可以方便的与REST服务器进 ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
- [转]JAVA并发编程学习笔记之Unsafe类
1.通过Unsafe类可以分配内存,可以释放内存:类中提供的3个本地方法allocateMemory.reallocateMemory.freeMemory分别用于分配内存,扩充内存和释放内存,与C语 ...
- CMake设置输出目录
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib)set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAK ...
- [Command] sync - 同步内存与硬盘数据
sync - 同步内存与硬盘之间的数据. sync [--help] [--version] sync 命令将内存中缓存的数据写入磁盘.这包括但不限于修改过的 superblock, inode 和延 ...
- RabbitMq 之简单队列
简单队列类似于我们的生产者,消费者, 一个生产者,对应一个消费者. 直接上代码: package com.j1.rabbitmq.simple; import com.j1.rabbitmq.util ...
- es 5.0的下载安装for mac
为了学习es的同学少走些弯路,特此记下笔记,以供学习. 我装的es是5.4.3 一,下载安装es, 1,es 5.0之后变化很大,对jdk要求为1.8,(先升级jdk) 2,下载地址 :https:/ ...
- codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
题目链接:http://www.codeforces.com/problemset/problem/118/A题意:字符串转换……C++代码: #include <string> #inc ...