首頁(yè)下拉刷新,發(fā)現(xiàn)UICollectionView 內(nèi)部刷新有閃屏問(wèn)題。
具體效果如下圖:
某個(gè)cell出現(xiàn)閃屏情況.gif
慢動(dòng)作查看, 看是干掉了這塊,重新加載視圖的過(guò)程。 其他部分沒(méi)出現(xiàn)這個(gè)問(wèn)題,其他部分看是漸變的。
慢動(dòng)作查看.gif
查看具體代碼,這塊是拿到數(shù)據(jù)之后創(chuàng)建視圖的。 具體代碼:
- (void)setContentData:(Model *)model {
_model = model;
//根據(jù)數(shù)據(jù)創(chuàng)建視圖
}
修改了一下創(chuàng)建視圖方式,改在layoutSubviews
里創(chuàng)建視圖
- (void)setContentData:(Model *)model {
_model = model;
//做一個(gè)標(biāo)記位
_isHadAddView = NO;
}
- (void)layoutSubviews {
[super layoutSubviews];
if (CGRectGetHeight(self.frame) > 0 && CGRectGetWidth(self.frame) > 0 && !_isHadAddView) {
//創(chuàng)建視圖***
_isHadAddView = YES;
}
}
修改完了之后,這塊是不閃屏了,但是又發(fā)現(xiàn)整體閃屏了,真是日了狗: 如下閃瞎眼的。。
UICollectionView 刷新閃屏.gif
在查找方法,好多遇見(jiàn)UICollectionView刷新閃屏的問(wèn)題.UICollectionView 刷新閃屏修復(fù); 但是在我這邊都不生效。
沒(méi)辦法我只能關(guān)閉UICollectionView刷新的隱式動(dòng)畫,解決問(wèn)題。
在reloadData
時(shí)關(guān)閉動(dòng)畫。
- (void)refreshData {
[CATransaction setDisableActions:YES];
[self.collectionView reloadData];
[CATransaction commit];
}
修復(fù)之后:
修復(fù)之后.gif