嗯,有趣。由於集合視圖可以循環使用單元格,因此它們會在視圖層次結構中移動或移出屏幕時不斷添加和移除。這就是說,它有理由,當它們被重新添加到視圖中時,它們只是作爲子視圖添加,這意味着當一個單元格被回收時,它現在具有所有單元格中最高的z-index。
解決此問題的一個相當無痛的方法是手動調整每個單元的z位置,使其隨着索引路徑遞增。這樣,低(y)的細胞總是會出現在(z)上方的細胞(y)之上。
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellID = @"CELLID";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath];
if (cell.layer.zPosition != indexPath.row) {
[cell.layer setZPosition:indexPath.row];
}
return cell;
}
完美!非常感謝。看來,它可以按我的需要工作! –
@AccidBright很高興聽到它幫助! –
經過詳細的測試後,我發現這段代碼能正確顯示單元重疊,但實際上這並不會改變順序。滾動後有時會選擇另一個下的單元格... –