Auto adjust the UITableViewCell height depending on its contents

后端 未结 2 899
执笔经年
执笔经年 2021-01-01 06:37

I want to adjust the height of a cell depending on its contents. I know UITableViewDelegate lets you implement the

- (CGFloat) tableView: (UITableView *) ta         


        
相关标签:
2条回答
  • 2021-01-01 06:50

    You have to enter some code into that method that calculates the height of the row content. Exactly what code you need to put depends entirely on what kind of content you're displaying.

    For example, if you're displaying text content that may wrap across multiple lines, you're probably going to end up using one of NSString's sizeWithFont: family of methods.

    0 讨论(0)
  • 2021-01-01 07:07

    If you want your rows to have different heights, you have to calculate every row's height.

    I've met such a problem. I calculated the heights of rows according to contents parsed from a json string. here's what i did.

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    
        // parse json
        id qWeiboContent = [self.array objectAtIndex:indexPath.row];
    
        float totalContentHeight;
        QWeiboContentModel *model = [self getQWeiboContentFromJSON:qWeiboContent];
        QWeiboContentModel *subModel = nil;
    
        totalContentHeight += model.forOrComment.heightValue;   // comment text view's height
        totalContentHeight += model.content.heightValue;        // content text view's height
        totalContentHeight += 21 * 2;                           // 21 is height of a label
        totalContentHeight += model.imageUrl.heightValue;
        totalContentHeight += CELL_CONTENT_MARGIN;
    
        if ([model.type isEqualToString:REPOSTED]) {
    
            id qWeiboSource = [qWeiboContent objectForKey:@"source"];
            subModel = [self getQWeiboContentFromJSON:qWeiboSource];
            model.source = subModel;
    
            totalContentHeight += subModel.forOrComment.heightValue;    
            totalContentHeight += subModel.content.heightValue;         
            totalContentHeight += 21 * 2;                              
            totalContentHeight += subModel.imageUrl.heightValue;
            totalContentHeight += CELL_CONTENT_MARGIN;
        }
    
        if (self.arrayQQWeibo == nil) {
    
            self.arrayQQWeibo = [[NSMutableArray alloc]init];
        }
        [self.arrayQQWeibo addObject:model];
    
        return totalContentHeight;
    }
    
    0 讨论(0)
提交回复
热议问题