//声明下拉操作
UIRefreshControl *refreshControl;
//下拉刷新操作refreshControl=[[UIRefreshControl alloc]init];
refreshControl.attributedTitle=[[NSAttributedString alloc]initWithString:@"刷新中。。。。"];
//将下拉操作加入到对应的tableview中
[self.collentTableview addSubview:refreshControl];
//监听
[refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];
-(void)refresh{
NSLog(@"++++");
//停止刷新(没有延迟所以它会立即消失)
[refreshControl endRefreshing];
}
//上拉加载
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
//记录scrollView.frame.size.height+scrollView.contentOffset.y的最大值
float temp;
if (scrollView.frame.size.height+scrollView.contentOffset.y > scrollView.contentSize.height+20){
if (self.upActivityIndicatorView.hidden) {
temp=scrollView.frame.size.height+scrollView.contentOffset.y;
[UIView animateWithDuration:0.5 animations:^{
CGRect tempframe=self.collentTableview.frame;
tempframe.size.height-=80;
self.collentTableview.frame=tempframe;
}];
self.upActivityIndicatorView.hidden=NO;
[self.upActivityIndicatorView startAnimating];
}
}else if(!self.upActivityIndicatorView.hidden && scrollView.frame.size.height+scrollView.contentOffset.y < temp){
[UIView animateWithDuration:0.5 animations:^{
CGRect tempframe=self.collentTableview.frame;
tempframe.size.height+=80;
self.collentTableview.frame=tempframe;
[self.upActivityIndicatorView stopAnimating];
}];
}
}
注:
contentSize是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍。
contentOffset是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentoffset就是(0 ,480),也就是y偏移了480
contentInset是scrollview的contentview的顶点相对于scrollview的位置,例如你的contentInset = (0 ,100),那么你的contentview就是从scrollview的(0 ,100)开始显示