UITableView上拉、下拉原理

本文详细介绍了TableView上拉刷新的实现原理,包括不同状态之间的转换逻辑及如何通过调整Inset来展示额外的视图(pullView),并给出了具体的实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        TableView的上拉,下拉特效已经满大街都是了,也有很多第三方的代码。

        这两天研究了一下其原理,分享一下思路。这里以tableView的上拉为例,由于上拉操作的样式也很多,这里只介绍一种:在上拉tableView的时候,在tableView的bottom下面,添加一个view,该view可以自定义。我称这个view为pullView,pullView是动态的,如下图(该图仅展示了loading状态,另外在loading的位置,还有“上拉显示更多”、“松手显示更多”和“没有更多”几个状态字符


下图列出来pullView的基本状态,以及他们相互转化的路线。


1. 将tableView向上稍微拉出一点,此时显示“上拉显示更多”

2. 继续向上拉,超出一定距离,显示“松手可显示更多”;此时用户可继续向上拉,程序员要在- (void)scrollViewDidScroll:(UIScrollView *)scrollView 中要不断设置pullView的frame,以便pullView可以跟随scrollerView

3. 松手后,显示“加载中...”(需要设置Inset,即,将scrollerView的Inset.Bottom变大,以至于能腾出空间显示pullView。就上图而言Inset({64, 0, 56, 0}))

4.在上拉时候没有松手,又拉回去(中间没有停顿)。 

5.继续下拉,直至pullView移除屏幕了

6.loading完成就隐藏(恢复Inset,但是不恢复Offset,不然则出现抖动,关于抖动更详细的参考这里

7. 某些情况直接跳过第一步,进入trigger状态。

8. 显示“没有更多”的label

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值