无法设置我的uitableviewcell的高度

时间:2010-01-20 22:57:28

标签: iphone objective-c xcode uitableview

我用这个来设置我的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和下一个单元格之间存在令人不快的距离。为什么他没有为某些细胞获得正确的高度。这是一个例子:

alt text http://img34.imageshack.us/img34/214/bildschirmfoto20100120uw.png

3 个答案:

答案 0 :(得分:1)

我所能说的只是在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];

答案 1 :(得分:0)

一种可能性是你在每个函数中将CGSize宽度设置为不同,对于行高CGSizeMake(268, MAX_HEIGHT),对于setTweetText它是CGSizeMake(262, MAX_HEIGHT)

答案 2 :(得分:0)

从该方法中调整sizeWithFont并不是一个好主意,它相当重,会削减你的滚动性能。如果可能的话,计算之前的高度并存储它们以便从该方法快速访问