下拉刷新与上拉加载
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)开始显示
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)开始显示
相关文章推荐
- linux netstat 命令简解
- 一个人的旅行(floyd+dijskra+SPFA+Bellman)
- 获得UIView对应 的viewController
- win7取消共享设置
- MySQL Sending data导致查询很慢的问题详细分析
- 透视矩阵的推导(最直观、最深入、最还原,看完请点赞。)
- Spring task quartz 定时任务的几种实现
- 各种排序算法的实现,总结与比较
- Dialog自定义布局
- unity3d打包和包的使用
- mac 免密码登陆服务器
- NSString什么时候用copy,什么时候用strong
- 分布式锁实现
- 学习文章连载一
- 树莓派实现用pi用户自动登录
- windows下nginx安装、配置与使用
- Android的API版本和名称对应关系
- UNITY3D学习笔记4
- qml:1807: Error: Insufficient arguments
- Spring MVC下跳转问题的总结