我用这个来设置我的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
答案 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并不是一个好主意,它相当重,会削减你的滚动性能。如果可能的话,计算之前的高度并存储它们以便从该方法快速访问