zoukankan      html  css  js  c++  java
  • 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];
            
        }
  • 相关阅读:
    学习笔记——Maven 如何处理传递性依赖
    gitlab 部署
    jenkins部署
    python 使用json格式转换
    php加载memcache
    centos6.5 apache+tomcat结合 负载均衡
    linux部署tomcat
    linux安装java环境
    kickstart安装
    cobbler部署
  • 原文地址:https://www.cnblogs.com/syios/p/6869106.html
Copyright © 2011-2022 走看看