美文网首页简书首页
iOS 开发 列表预加载

iOS 开发 列表预加载

作者: 强子ly | 来源:发表于2018-10-20 11:02 被阅读170次
豆瓣-预加载.gif

最近增加了一个小需求,就是部分页面上拉加载的时候添加“预加载”功能,类似于上图中豆瓣的这样,其实这个逻辑很简单,就是在快要滑动到列表底部的时候去调用上拉加载的方法。

这里简单介绍两种实用方法:

一、willDisplayCell

- (void)collectionView:(UICollectionView *)collectionView 
       willDisplayCell:(UICollectionViewCell *)cell 
    forItemAtIndexPath:(NSIndexPath *)indexPath {
    // 列表中是否存在更多数据
    if (self.dataSource.hasMoreData == NO) {
        return;
    }
    
    if (indexPath.row > [self.dataSource numberOfDatasInSection:indexPath.section] * 0.8) {
        [self.dataSource loadMoreDataWithCompletion:nil];
    }
}

二、scrollViewDidScroll

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    // 列表中是否存在更多数据
    if (self.dataSource.hasMoreData == NO) {
        return;
    }

    CGFloat threshold = 0.8;
    CGFloat current = scrollView.contentOffset.y + scrollView.frame.size.height;
    CGFloat total = scrollView.contentSize.height;
    CGFloat ratio = current / total;
    
    if (ratio >= threshold) {
        [self.dataSource loadMoreDataWithCompletion:nil];
    }
}

三、注意:

注意,这样写会产生问题,就是当列表滑动0.8的时候触发网络加载,在未完成网络加载的情况下,列表滑动0.81回再次触发网络加载,我是在loadMoreDataWithCompletion里面有网络加载判断,所以,直接copy代码的老铁们需要注意一下,有好的方法也可以留言,大家一起改进

- (void)loadMoreDataWithCompletion:(void (^)(BOOL))completion {
    // 当前网络正在加载
    if (super.statusObject.isLoading) {
        return;
    }
    ......
}

相关文章

  • iOS 开发 列表预加载

    最近增加了一个小需求,就是部分页面上拉加载的时候添加“预加载”功能,类似于上图中豆瓣的这样,其实这个逻辑很简单,就...

  • 预加载与智能预加载 (VIA)

    预加载与智能预加载(iOS) 网络与性能 预加载无限滚动列表Threshold惰性加载智能预加载 总结 前两次的分...

  • iOS webview Hybrid资源文件预加载(NSURLP

    HybridPreLoading iOS webview Hybrid开发预加载 虽然NSURLCache可以实现...

  • iOS 预加载列表数据

    预加载(TableView或者CollectionView):在用户阅读了最新页码数据的70%时(根据实际情况调节...

  • UITableView 的优化技巧

    UITableView 是 iOS 开发中的常用控件,用来加载列表数据,当列表数据量大或者列表布局过于复杂的时候有...

  • iOS 实现简单的列表预加载

    在大部分 App 中,在有 feeds 流之类列表的地方,由于后端数据一般采用分页加载,为了用户体验需要做预加载。...

  • React Native白屏优化

    本文针对使用React Native开发混合应用的过程中iOS端白屏问题,提出了react-native预加载优化...

  • iOS 预加载

    最近看到一篇文章介绍 通过runtime进行资源预加载,因为项目中很多地方体验不是很好,借此研究一下、

  • iOS开发资源

    开发资源 开发资料 • 豆瓣iOS开源库列表 - 豆瓣iOS开源库列表,很多开源项目。 • iOS-Core-An...

  • IOS 预加载与智能预加载

    本篇小结 这篇文章是 ASDK 系列中的最后一篇,文章会介绍 iOS 中几种预加载的方案,以及 ASDK 中是如何...

网友评论

    本文标题:iOS 开发 列表预加载

    本文链接:https://www.haomeiwen.com/subject/nbasaftx.html