• Tips:取消UICollectionView的隐式动画


    http://www.cocoachina.com/ios/20151204/14211.html

    UICollectionView在reloadItems的时候,默认会附加一个隐式的fade动画,有时候很讨厌,尤其是当你的cell是复合cell的情况下(比如cell使用到了UIStackView)。

    下面几种方法都可以帮你去除这些动画

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    //方法一
    [UIView performWithoutAnimation:^{
        [collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];
    }];
    //方法二
    [UIView animateWithDuration:0 animations:^{
        [collectionView performBatchUpdates:^{
            [collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];
        } completion:nil];
    }];
         
    //方法三
    [UIView setAnimationsEnabled:NO];
    [self.trackPanel performBatchUpdates:^{
        [collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];
    } completion:^(BOOL finished) {
        [UIView setAnimationsEnabled:YES];
    }];

    如果你的APP只支持iOS7+ 推荐使用第一种方式performWithoutAnimation(感谢@sunnyxx的tip) 简单方便

    but

    问题还没有结束 上面介绍的方法只能解决UIView的Animation 如果你的cell中还包含有CALayer的动画 比如这样

    1
    2
    3
    4
    5
    6
    - (void)layoutSubviews
    {
        [super layoutSubviews];
         
        self.frameLayer.frame = self.frameView.bounds;
    }

    上述情况多用于自定义控件使用了layer.mask的情况 如果有这种情况 上面提到的方法是无法取消CALayer的动画的 但是解决办法也很简单

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    - (void)layoutSubviews
    {
        [super layoutSubviews];
         
        [CATransaction begin];
        [CATransaction setDisableActions:YES];
         
        self.frameLayer.frame = self.frameView.bounds;
         
        [CATransaction commit];
         
    }

    done!

  • 相关阅读:
    python 利用turtle库绘制五角星
    ci框架memcached使用
    pycharm搭建开发配置,远程调试,数据库配置,git配置等
    织梦dedecms后台发布文章提示“标题不能为空”
    mysql revise
    sublime 新手代码提示
    div+css的属性
    css解决IE6,IE7,firefox兼容性问题
    Sublime常用插件
    Dede CMS如何在文章中增加“附件下载”操作说明
  • 原文地址:https://www.cnblogs.com/itlover2013/p/5024446.html
Copyright © 2020-2023  润新知