首页下拉刷新,发现UICollectionView 内部刷新有闪屏问题。
具体效果如下图:
某个cell出现闪屏情况.gif
慢动作查看, 看是干掉了这块,重新加载视图的过程。 其他部分没出现这个问题,其他部分看是渐变的。
慢动作查看.gif
查看具体代码,这块是拿到数据之后创建视图的。 具体代码:
- (void)setContentData:(Model *)model {
_model = model;
//根据数据创建视图
}
修改了一下创建视图方式,改在layoutSubviews
里创建视图
- (void)setContentData:(Model *)model {
_model = model;
//做一个标记位
_isHadAddView = NO;
}
- (void)layoutSubviews {
[super layoutSubviews];
if (CGRectGetHeight(self.frame) > 0 && CGRectGetWidth(self.frame) > 0 && !_isHadAddView) {
//创建视图***
_isHadAddView = YES;
}
}
修改完了之后,这块是不闪屏了,但是又发现整体闪屏了,真是日了狗: 如下闪瞎眼的。。
UICollectionView 刷新闪屏.gif
在查找方法,好多遇见UICollectionView刷新闪屏的问题.UICollectionView 刷新闪屏修复; 但是在我这边都不生效。
没办法我只能关闭UICollectionView刷新的隐式动画,解决问题。
在reloadData
时关闭动画。
- (void)refreshData {
[CATransaction setDisableActions:YES];
[self.collectionView reloadData];
[CATransaction commit];
}
修复之后:
修复之后.gif
网友评论