码迷,mamicode.com
首页 > 其他好文 > 详细

UICollectionView的隐式动画的问题

时间:2017-05-17 20:01:15      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:介绍   style   问题   UI   led   com   默认   nim   item   

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];
        
    }

UICollectionView的隐式动画的问题

标签:介绍   style   问题   UI   led   com   默认   nim   item   

原文地址:http://www.cnblogs.com/syios/p/6869106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!