美文网首页iOS高级进阶iOS DeveloperiOS 开发
collectionView reloadData 引起闪屏

collectionView reloadData 引起闪屏

作者: 南城同學 | 来源:发表于2016-11-25 16:48 被阅读897次

    1.在dataSource赋值的时候:

    注:model.mediumArr为加载进来的新数据源

    NSMutableArray*indexPaths = [[NSMutableArray alloc] init];

     for ( inti =0; i < model.mediumArr.count;  i ++) {

              NSIndexPath *indexPath = [NSIndexPath indexPathForRow: self.dataSource.count+ i inSection: 0];

               [indexPaths addObject: indexPath];

    }

    if (indexPaths.count > 0) {

         [self.dataSource addObjectsFromArray:model.mediumArr];

         [self.collectionView insertItemsAtIndexPaths:indexPaths];

         [UIView performWithoutAnimation:^{

               [self.collectionView reloadItemsAtIndexPaths:indexPaths];

         }];

    }

    2.如果项目涉及到collectionView的滑动优化,在需要只调用reloadData的时候:添加如下动画。

    [UIView animateWithDuration:0 animations:^{

          [self.collectionView performBatchUpdates:^{

                [self.collectionView reloadData];

           } completion: nil];

    }];

    相关文章

      网友评论

      • Zszen:试了很多次, 我第一次载入数据用reload, 之后用insert, 暂时这么解决, 第一次如果insert会蹦, 第二次reload会闪屏, 等长时间试试看
      • 男神nick:为啥我的设置这个方法会报错呢
        南城同學:@男神nick 加载数据时用步骤一,它有包含reloadData的功能;
        步骤二不能和步骤一 放在一起用 这个动画只能加在 数据源不变,只是单纯地reloadData时,比如cell滑动中不显示图片,滑动结束在后,刷新界面,显示cell中的图片。
        男神nick:@何首乌殿下 调用的是下面的你那个方法 动画reloaddata 这个会崩溃
        南城同學:@男神nick 要确保indexPaths不能为空,还有看一下几个关联"count" 有数组有用错没

      本文标题:collectionView reloadData 引起闪屏

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