首页 > 代码库 > UICollectionView的隐式动画的问题
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]; }
UICollectionView的隐式动画的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。