Is it possible to have differing heights in a UITableView Cell when I use several different ways of displaying the cell?

后端 未结 11 1307
一整个雨季
一整个雨季 2020-12-21 19:25

I\'ve spent several days trying to figure this out, but there doesn\'t seem to be a solution. I have a very basic UITableView cell with two labels in it. One of them will be

11条回答
  •  半阙折子戏
    2020-12-21 20:14

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    
    
        NSString *firstLable = firstLable.text;
        NSString *secondLable = SecondLable.text;
    
    
    
        CGSize constraint = CGSizeMake(cell.frame.size.width/2, 20000.0f);
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
        CGRect firstLableRect = [firstLable boundingRectWithSize:constraint
                           options:NSStringDrawingUsesLineFragmentOrigin
                           attributes:@{NSFontAttributeName:[UIFont fontWithName:@"Your App Font" size:16.0f],      
                            NSParagraphStyleAttributeName: paragraphStyle.copy} context:nil];
    
    
        CGRect secondLableRect = [secondLable boundingRectWithSize:constraint
                                  options:NSStringDrawingUsesLineFragmentOrigin
                                  attributes:@{NSFontAttributeName:[UIFont fontWithName:@"Your App Font" size:16.0f],                                       NSParagraphStyleAttributeName: paragraphStyle.copy}context:nil];
    
    
        float max = MAX(firstLableRect.size.height, secondLableRect.size.height) + 20;
    
    
        //20 for spacing 10 pc above and 10 pc below 
    
    
        return max ;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *cellIdentifier=@"cellIdentifier";
        UITableViewCell *cell =  [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if (!cell)
        {
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        }
        cell.selectionStyle =UITableViewCellSelectionStyleNone;
    
    
    
        NSString *lable1 = @"first label text";
        NSString *lable2 = @"second lable text";
    
        CGSize constraint = CGSizeMake(cell.frame.size.width/2-10, 20000.0f);
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
        CGRect firstLableRect = [lable1 boundingRectWithSize:constraint
                                 options:NSStringDrawingUsesLineFragmentOrigin
                                 attributes:@{NSFontAttributeName:[UIFont fontWithName:@"Your App Font" size:16.0f],
                                 NSParagraphStyleAttributeName: paragraphStyle.copy} context:nil];
    
    
        CGRect secondLableRect = [lable2 boundingRectWithSize:constraint
                                  options:NSStringDrawingUsesLineFragmentOrigin
                                  attributes:@{NSFontAttributeName:[UIFont fontWithName:@"Your App Font" size:16.0f],                                       NSParagraphStyleAttributeName: paragraphStyle.copy}context:nil];
    
    
    
        UILabel *firstLable = [[UILabel alloc]initWithFrame:CGRectMake(5,10,constraint.width,firstLableRect.size.height)];
        [firstLable setLineBreakMode:NSLineBreakByWordWrapping];
        firstLable.minimumScaleFactor = 15.0f;
        [firstLable setNumberOfLines:0];
        firstLable.textAlignment = NSTextAlignmentLeft;
        [firstLable setFont:[UIFont fontWithName:@"your App font" size:16.0f]];
        [cell.contentView addSubview:firstLable];
    
    
        UILabel *secondLable = [[UILabel alloc]initWithFrame:CGRectMake(cell.frame.size.width/                       2+5,10,constraint.width,secondLableRect.size.height)];
        [secondLable setLineBreakMode:NSLineBreakByWordWrapping];
        secondLable.minimumScaleFactor = 15.0f;
        [secondLable setNumberOfLines:0];
        secondLable.textAlignment = NSTextAlignmentLeft;
        [secondLable setFont:[UIFont fontWithName:@"your App font" size:16.0f]];
    
        [cell.contentView addSubview:secondLable];
    
        return cell;
    }
    

提交回复
热议问题