解決UICollectionView的Cell復用引起的布局混亂問題


解決UICollectionView的Cell復用引起的布局混亂問題

 

問題復現.gif


查了一下度娘發現沒有好的解決辦法,於是發動自己的聰明才智,終於找到如下解決辦法(充分證明了自己動手豐衣足食啊😄)

  1. 首先創建一個可變數組,用來存放Cell的唯一標示符

    // 用來存放Cell的唯一標示符
    @property (nonatomic, strong) NSMutableDictionary *cellDic;
    #warning 別忘了初始化喲
     self.cellDic = [[NSMutableDictionary alloc] init];
  2. 在cellForItemAtIndexPath:這個方法中作相應的一些處理即可,代碼如下

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    // 每次先從字典中根據IndexPath取出唯一標識符
    NSString *identifier = [_cellDic objectForKey:[NSString stringWithFormat:@"%@", indexPath]];
    // 如果取出的唯一標示符不存在,則初始化唯一標示符,並將其存入字典中,對應唯一標示符注冊Cell
    if (identifier == nil) {
        identifier = [NSString stringWithFormat:@"%@%@", DayCell, [NSString stringWithFormat:@"%@", indexPath]];
        [_cellDic setValue:identifier forKey:[NSString stringWithFormat:@"%@", indexPath]];
        // 注冊Cell
        [self.collectionView registerClass:[CalendarCollectionViewCell class]  forCellWithReuseIdentifier:identifier];
    }

    CalendarCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

// 此處可以對Cell做你想做的操作了...

    return cell;
}

修改之后的效果圖如下所示


修改之后的效果圖.gif


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM