美文网首页
UICollectionView 隐式动画的问题

UICollectionView 隐式动画的问题

作者: LINGSHOW | 来源:发表于2019-01-23 15:26 被阅读11次

    最近使用UICollectionView来布局页面,在开发过程中发现一个问题。

    创建UICollectionView的头部的代理方法viewForSupplementaryElementOfKind,当手动调用UICollectionView的reloadData时,viewForSupplementaryElementOfKind方法不会回调。

    1、需求:

    collectionView的header需要根据数据进行不同的布局,各种布局高度也不一样。

    2、方案:

    (方案相对比较粗暴,如有更好的方案,还望不吝赐教)
    注释:collectionView采用懒加载方式加载

    2.1、reloadData 会引起collectionView的隐式动画
    [_collectionView removeFromeSupView];
    _collectionView = nil;
    [self.collectionView reloadData];
    
    2.2、我采用的方案
     [_collectionView removeFromSuperview];
      _collectionView = nil;
     [UIView animateWithDuration:0 animations:^{
           [self.collectionView performBatchUpdates:^{
               [self.collectionView reloadData];
           } completion:nil];
     }];
    
    2.3、关闭collectionView隐式动画的另一方案
    [UIView setAnimationsEnabled:NO];
    [collectionView performBatchUpdates:^{
        [collectionView reloadData];
    } completion:^(BOOL finished) {
        [UIView setAnimationsEnabled:YES];
    }];
    

    总结

    lz采用的方案相对比较粗暴,其实还有其他方案的。比如:把headerView用UICollectionViewCell来实现。

    相关文章

      网友评论

          本文标题:UICollectionView 隐式动画的问题

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