网上搜索上拉刷新,基本没什么可用信息,大都一篇文章传来传去,描述也不清楚。正好我们项目中有用到上拉刷新,就拿过来对着下拉刷新(上一篇有下拉刷新Demo下载地址)看,并且试着自己修改,修改步骤如下:
1.初始化上拉刷新视图,注意位置与上拉刷新的区别:
refreshView = [[EGORefreshTableFooterView alloc] initWithFrame:CGRectZero];
refreshView.delegate = self;
//下拉刷新的控件添加在tableView上
[self.tableView addSubview:refreshView];
refreshView的frame应该在表格加载完数据后再设置,因为它的位置与表的contentsize有关:
-(void)viewDidAppear:(BOOL)animated
{
//frame应在表格加载完数据源之后再设置
[self setRefreshViewFrame];
[super viewDidAppear:animated];
}
setRefreshViewFrame实现如下:
-(void)setRefreshViewFrame
{
//如果contentsize的高度比表的高度小,那么就需要把刷新视图放在表的bounds的下面
int height = MAX(self.tableView.bounds.size.height, self.tableView.contentSize.height);
refreshView.frame =CGRectMake(0.0f, height, self.view.frame.size.width, self.tableView.bounds.size.height);
}
2.把箭头、状态提示、上次拉取时间以及刷新是箭头所变的风火轮的位置重置。
3.既然是叫上拉刷新,刷新视图在底部,那么就把上拉刷新的文件及里面的函数名改一下吧,用Footer替代里面所有的Header就行(当然,最好检查一遍,看哪些地方不能改)。
4.有个地方需要注意一下,就是loading的时候,scrollview滚动时候状态变化的条件要注意,要考虑两种情况:一、contentsize的高度小于表的高度;二、contentsize的高度大于表的高度。
5.箭头方向的修改。
EGORefreshTableFooterView文件中修改的地方我都做了标记://modify by shenjx,可以知道哪里是修改了的。Demo地址如下: