Не могу установить высоту моего uitableviewcell право - PullRequest
0 голосов
/ 21 января 2010

Я устанавливаю размер моих UITableCell с помощью этого:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSString * vergleich = [nachricht objectAtIndex:indexPath.row];
    CGSize size = [vergleich sizeWithFont:[UIFont fontWithName:@"Helvetica" size:14]
                     constrainedToSize:CGSizeMake(268, MAX_HEIGHT)
                         lineBreakMode:UILineBreakModeWordWrap];
    return size.height + 30;
}

nachricht - это NSArray, который содержит все сообщения. Код только смотрит, какова длина сообщения (с указанным шрифтом) и вычисляет высоту. Я установил + 30, потому что поверх сообщения (UITextView) есть UIlabel.

UITextView, который должен содержать сообщения, получает размер с этим кодом:

- (void)setTweetText:(NSString *)_tweet;{
    CGSize size = [_tweet sizeWithFont:[UIFont fontWithName:@"Helvetica" size:14]
                  constrainedToSize:CGSizeMake(268, MAX_HEIGHT)
                      lineBreakMode:UILineBreakModeWordWrap];
    [textText setFrame:CGRectMake(55, 25, 268, size.height + 10)];
    textText.text = _tweet;
    [textText sizeToFit];
    textText.dataDetectorTypes = UIDataDetectorTypeLink;
}

Теперь есть проблема, и я не знаю почему: UITextView больше ячейки, даже если я установил размер высоты ячейки, между TextView и следующей ячейкой есть неприятное расстояние. Почему он не получает нужную высоту для некоторых клеток. Вот пример:

альтернативный текст http://img34.imageshack.us/img34/214/bildschirmfoto20100120uw.png

Ответы [ 3 ]

1 голос
/ 21 января 2010

Все, что я могу сказать, в моем cellForRowAtIndexPath Я использую следующее, и это работает. Мой heightForRowAtIndexPath почти идентичен вашему.

double d = [self tableView:table heightForRowAtIndexPath:indexPath];
UILabel* label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 280, d-20)] autorelease];
label.numberOfLines = 100;
label.lineBreakMode = UILineBreakModeWordWrap;
[label setFont:[UIFont boldSystemFontOfSize:[UIFont smallSystemFontSize]]];
label.text  = [descriptions objectAtIndex:indexPath.section];
[cell.contentView addSubview:label];
0 голосов
/ 23 января 2010

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

0 голосов
/ 21 января 2010

возможно, вы установили ширину CGSize в каждой функции разной, для высоты строки у вас есть CGSizeMake(268, MAX_HEIGHT), а для setTweetText - CGSizeMake(262, MAX_HEIGHT)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...