Заставьте UITableViewCell расширяться, когда текст превышает пространство - PullRequest
2 голосов
/ 27 марта 2010

У меня есть UITableViewCell, и это UITableViewCellStyleDefault. Когда я пытаюсь поместить текст длиннее UITableViewCell, он усекает его. Как сделать так, чтобы ячейка расширялась, чтобы вместить этот текст?

Ответы [ 3 ]

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

Я не пытался делать именно то, что вы пытаетесь сделать, но, вероятно, это будет выглядеть примерно так:

Вам необходимо изменить размер представления в зависимости от длины текстовой строки внутри него.

Делегат табличного представления (ваш контроллер представления) должен реализовать

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    Message *msg = (Message *)[messages objectAtIndex:indexPath.row];
    CGSize size = [[msg text] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:kLabelFontSize]
                         constrainedToSize:CGSizeMake(220.0f, 480.0f)
                             lineBreakMode:UILineBreakModeTailTruncation];
    CGFloat minHeight = 20.0f;
    CGFloat height = size.height > minHeight ? size.height : minHeight;
    return height;
}

, который сообщает представлению, насколько высоким должен быть каждый ряд.

Вам также понадобится изменить размер фрейма метки UITableViewCell аналогичным образом.

1 голос
/ 27 марта 2010

Вы не можете увеличить ширину ячейки больше, чем экран iphone ... Что вы можете сделать, это 1> сделать шрифт меньше 2> сделать текст несколькими строками

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    CGRect contentRect = CGRectMake(80.0, 0.0, 240, 40);
    UILabel *textView = [[UILabel alloc] initWithFrame:contentRect];

    textView.text = mytext;
    textView.numberOfLines = 2;
    textView.textColor = [UIColor grayColor];
    textView.font = [UIFont systemFontOfSize:12];
        [cell.contentView addSubview:textView];
    [textView release];
0 голосов
/ 27 марта 2010

Я думаю, что все клетки должны быть одинаковой высоты и ширины.Вы можете изменить высоту UITableViewCells, используя свойство tableView's rowHeight.

Например, если вы подкласс UITableViewController

self.tableView.rowHeight = 100;

Другой вариант -добавить пользовательский UILabel в качестве подпредставления ячеек contentView, как показано ранее.

...