iOS开发UICollectionView的隐式动画的问题

释放双眼,带上耳机,听听看~!

UICollectionView在reloadItems或者更新子控件布局的时候,默认会附加一个隐式的动画

有时候我们并不需要这个动画,如何解决呢?

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

//方法一
[UIView performWithoutAnimation:^{
    在内部相关操作
}];

 //方法二
 [UIView setAnimationsEnabled:NO];
    在内部相关操作
 [UIView setAnimationsEnabled:YES];

问题还没有结束 上面介绍的方法只能解决UIView的Animation 如果你的cell中或者你的collectionview的子控件中还包含有CALayer的话,这个问题依然无法解决。

比如这样:

  - (void)layoutSubviews
    {
        [super layoutSubviews];
        
        self.frameLayer.frame = self.frameView.bounds;
    }

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

  - (void)layoutSubviews
    {
        [super layoutSubviews];
        
        [CATransaction begin];
        [CATransaction setDisableActions:YES];
        
        self.frameLayer.frame = self.frameView.bounds;
        
        [CATransaction commit];
        
    }

为TA充电
共{{data.count}}人
人已赞赏
iOS文章

iOS开发自定义数字键盘

2021-5-7 23:43:29

iOS文章

iOS开发UIScrollView添加阴影没有效果解决办法

2021-5-7 23:47:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索