iOS 融云修改RCConversationListViewController消息列表Cell复用重叠问题

随便做个笔记

- (void)willDisplayConversationTableCell:(RCConversationBaseCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    
    RCConversationCell *baseCell = (RCConversationCell *)cell;
    RCConversationModel *model = self.conversationListDataSource[indexPath.row];
    RCMessage *ms = (RCMessage *)model.lastestMessage;
    
    if (ms.extra != nil) {
        
        NSData *jsonData = [ms.extra dataUsingEncoding:NSUTF8StringEncoding];
        NSError *err;
        NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
        
        if ([dictionary[@"fromContactid"] integerValue] != 0) {

            //cell复用问题
            for (UIView *view in baseCell.contentView.subviews) {
                if ([view isKindOfClass:UIImageView.class] && view.tag == 120) {
                    [view removeFromSuperview];
                }
                if ([view isKindOfClass:UILabel.class] && view.tag == 110) {
                    [view removeFromSuperview];
                }
            }
            
            UIImageView *view = [[UIImageView alloc] init];
            view.tag = 120;
            [baseCell.contentView addSubview:view];
            view.translatesAutoresizingMaskIntoConstraints = NO;
            NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:baseCell.conversationTitle, @"view1", view,@"view", nil];
            [baseCell addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[view1]-15-[view(==30)]" options:0 metrics:nil views:dic]];
            [baseCell addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[view(==20)]" options:0 metrics:nil   views:NSDictionaryOfVariableBindings(view)]];
            
            UILabel *showLabel = [[UILabel alloc] init];
            showLabel.backgroundColor = [UIColor clearColor];
            showLabel.font = [UIFont systemFontOfSize:12];
            showLabel.tag = 110;
            [baseCell.contentView addSubview:showLabel];
            showLabel.translatesAutoresizingMaskIntoConstraints = NO;
            NSDictionary *showLabelDic = [NSDictionary dictionaryWithObjectsAndKeys:view, @"view1", showLabel,@"view",baseCell.messageCreatedTimeLabel,@"view2", nil];
            [baseCell addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[view1]-0-[view]-0-[view2]" options:0 metrics:nil views:showLabelDic]];
            [baseCell addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[showLabel(==20)]" options:0 metrics:nil   views:NSDictionaryOfVariableBindings(showLabel)]];
        
            if ([dictionary[@"fromContactid"] integerValue] == 1) {
                
                showLabel.text = @"她想和你视频";
                showLabel.textColor = RGBA(142, 74, 255, 1.0);
                
                NSMutableArray *ary=[NSMutableArray new];
                for(int I=1;I<=7;I++){
                    NSString *imageName=[NSString stringWithFormat:@"showGif%d",I];
                    UIImage *image=[UIImage imageNamed:imageName];
                    [ary addObject:image];
                }
                view.animationImages=ary;
                view.animationRepeatCount=0;
                view.animationDuration=1.0;
                [view startAnimating];
            }
            
            if ([dictionary[@"fromContactid"] integerValue] == 2) {
                
                showLabel.text = @"她距离你较近";
                showLabel.textColor = [UIColor redColor];
                
                NSMutableArray *ary=[NSMutableArray new];
                for(int I=1;I<=3;I++){
                    NSString *imageName=[NSString stringWithFormat:@"gifImage%d",I];
                    UIImage *image=[UIImage imageNamed:imageName];
                    [ary addObject:image];
                }
                view.animationImages=ary;
                view.animationRepeatCount=0;
                view.animationDuration=1.0;
                [view startAnimating];
            }
        
        }
        
        //cell复用问题
        for (UIView *view in baseCell.contentView.subviews) {
            if ([dictionary[@"fromContactid"] integerValue] == 0 && [view isKindOfClass:UIImageView.class] && view.tag == 120) {
                [view removeFromSuperview];
            }
            if ([dictionary[@"fromContactid"] integerValue] == 0 && [view isKindOfClass:UILabel.class] && view.tag == 110) {
                [view removeFromSuperview];
            }
        }
        
    } else {
        
        //cell复用问题
        for (UIView *view in baseCell.contentView.subviews) {
            if ([view isKindOfClass:UIImageView.class] && view.tag == 120) {
                [view removeFromSuperview];
            }
            if ([view isKindOfClass:UILabel.class] && view.tag == 110) {
                [view removeFromSuperview];
            }
        }
        
    }
    
    [cell layoutIfNeeded];
    
}

你可能感兴趣的:(iOS 融云修改RCConversationListViewController消息列表Cell复用重叠问题)