判断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(@"加载数据");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)