Автоматическая настройка высоты UITableViewCell в зависимости от ее содержимого - PullRequest
3 голосов
/ 14 октября 2010

Я хочу настроить высоту ячейки в зависимости от ее содержимого. Я знаю, что UITableViewDelegate позволяет вам реализовать

- (CGFloat) tableView: (UITableView *) tableView 
              heightForRowAtIndexPath: (NSIndexPath *) indexPath {
    return someHeight;
}

но я не хочу жестко задавать высоту. Есть ли способ сделать это динамически?

Ответы [ 2 ]

2 голосов
/ 14 октября 2010

Вы должны ввести некоторый код в этот метод, который вычисляет высоту содержимого строки. Какой именно код вам нужно поместить, полностью зависит от того, какой контент вы отображаете.

Например, если вы отображаете текстовое содержимое, которое может переноситься на несколько строк, вам, вероятно, придется использовать один из методов семейства sizeWithFont: NSString.

1 голос
/ 02 ноября 2011

Если вы хотите, чтобы ваши строки имели разную высоту, вы должны вычислить высоту каждой строки.

Я столкнулся с такой проблемой.Я рассчитал высоту строк в соответствии с содержимым, проанализированным по строке json.вот что я сделал.

- (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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...