您的位置:首页 > 其它

下拉刷新与上拉加载

2015-07-23 17:30 134 查看
//声明下拉操作

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)开始显示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: