Как я могу динамически изменить размер UITableViewCell в зависимости от высоты моей метки? - PullRequest
2 голосов
/ 15 июля 2011

У меня есть сгруппированный UITableView.

Я переопределяю высоту строки таблицы, но мне бы хотелось, чтобы первая строка имела динамическую высоту, основанную на размере высоты метки в моей ячейке,Как я могу получить эту высоту?

{
    CGFloat rowHeight = 0;

    if(indexPath.section == kBioSection) {
        switch(indexPath.row) {
            case kBioSectionDescriptionRow:                 
                rowHeight = 100;
                break;
            case kBioSectionLocationRow:                    
                rowHeight = 44;
                break;
            case kBioSectionWebsiteRow:                 
                rowHeight = 44;
                break;
        }
    }
    else {
        rowHeight = 44;
    }

    return rowHeight;
}

Ответы [ 3 ]

2 голосов
/ 15 июля 2011

Пожалуйста, перейдите по ссылке ниже:

http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/ - В этом руководстве объясняется, как динамически увеличивать высоту UITableViewCell.

2 голосов
/ 15 июля 2011

NSString имеет метод с именем

- (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode;

, объявленный в UIStringDrawing.h

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

1 голос
/ 09 августа 2012

вы можете использовать

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
 {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:15.0];
}

установить высоту для ячейки

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = @"Go get some text for your cell.";
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

return labelSize.height + 20;//set as per your need
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...