Как я могу создать переменный размер UITableViewCell? - PullRequest
9 голосов
/ 05 августа 2009

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell =  [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"StatusCell"] autorelease];

    CGRect frame = cell.contentView.bounds;
    UILabel *myLabel = [[UILabel alloc] initWithFrame:frame];
    myLabel.text = [[person.updates objectAtIndex:indexPath.row] valueForKey:@"text"];
    [cell.contentView addSubview:myLabel];

    [myLabel release];

    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

    NSString *text = [[person.updates objectAtIndex:indexPath.row] valueForKey:@"text"];
    UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
    CGSize withinSize = CGSizeMake(tableView.frame.size.width, 1000);
    CGSize size = [text sizeWithFont:font constrainedToSize:withinSize lineBreakMode:UILineBreakModeWordWrap];

    return size.height + 20;    
}

Кроме того, что мне не хватает, чтобы ярлыки выглядели длиннее, чем ячейка таблицы? alt text

Ответы [ 3 ]

15 голосов
/ 05 августа 2009

Tweetero предоставляет пример этого в MessageListController.m. Код там отображает следующий экран:

(Рис взято из Mashable ).

Базовая схема реализации:

  1. При создании UITableViewCell создайте и добавьте UILabel в качестве подпредставления способом, показанным в tableviewCellWithReuseIdentifier:. Ищите создание TEXT_TAG метки.

  2. при обогащении UITableViewCell представлениями убедитесь, что вы правильно отформатировали метку, как это делается в configureCell:forIndexPath, аналогично ищите метку метки TEXT_TAG.

  3. Возвращает соответствующую высоту для каждой ячейки, как это сделано в tableView:heightForRowAtIndexPath.

2 голосов
/ 05 августа 2009
myLabel.numberOfLines = 2;

Проверьте документы для получения полной информации о том, как использовать это свойство.

0 голосов
/ 10 ноября 2009
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return theSizeYouWantYourCellToBe;
}
...