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
原文地址:http://blog.csdn.net/hherima/article/details/44924319