Objective-c 下拉刷新,上拉加载实现原理

#pragma mark+++++++++++++++++++下拉刷新原理+++++++++++++++++++

  • (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView { NSLog(@"scrollViewX:%f scrollViewY:%f",scrollView.contentOffset.x ,scrollView.contentOffset.y); if (scrollView.contentOffset.y <-60) { [UIView animateWithDuration:0.2 animations:^{ self.allTableView.contentInset = UIEdgeInsetsMake(40.0f, 0.0f, 0.0f, 0.0f); } completion:^(BOOL finished){

          /**
           *  发起网络请求,请求刷新数据
           */
          [_dataSource requestListAllData:^(NSArray *array)
           {
               _allDataSource = [[NSMutableArray alloc]initWithArray:array];
               //刷新
               [_allTableView reloadData];
               self.pag=2;
               [UIView animateWithDuration:0.2 animations:^{
                   self.allTableView.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, 0.0f, 0.0f);
               }];
           }];
    
    
      }];
    

    } } #pragma mark+++++++++++++++++++上拉加载原理+++++++++++++++++++

  • (void)scrollViewDidEndDragging:(UIScrollView )scrollView willDecelerate:(BOOL)decelerate { NSLog(@"%f",scrollView.contentOffset.y); NSLog(@"%f",scrollView.frame.size.height); NSLog(@"%f",scrollView.contentSize.height); /*

    • 关键-->

    • scrollView一开始并不存在偏移量,但是会设定contentSize的大小,所以contentSize.height永远都会比contentOffset.y高一个手机屏幕的

    • 高度;上拉加载的效果就是每次滑动到底部时,再往上拉的时候请求更多,那个时候产生的偏移量,就能让contentOffset.y + 手机屏幕尺寸高大于这

    • 个滚动视图的contentSize.height */ if (scrollView.contentOffset.y + scrollView.frame.size.height >= scrollView.contentSize.height) { NSLog(@"%d %s",LINE,FUNCTION); [UIView commitAnimations];

      [UIView animateWithDuration:1.0 animations:^ { //frame发生的偏移量,距离底部往上提高60(可自行设定) self.allTableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0); } completion:^(BOOL finished) { __weak typeof(self) weakSelf = self; [_dataSource addListAllDataWithPag:weakSelf.pag Data:^(NSArray *array) { [weakSelf.allDataSource addObjectsFromArray:array]; [weakSelf.allTableView reloadData]; weakSelf.pag+=1;

      }];
      

      }];

    } }

转载于:https://my.oschina.net/u/2483781/blog/726841

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值