最奇怪的事情......
我在UITableViewCell中有UILabel
,它会根据文本内容自动更改高度。
我设法让它工作 - 但只是在我第二次滚动。当我向下滚动时,文本被截断为1行。当我向上滚动而不是向下滚动时,单元格是完美的。
怎么回事?
代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CommentCell *cell = (CommentCell *)[tableView dequeueReusableCellWithIdentifier:@"CommentCell"];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CommentCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
if ([commentsArray count] == 0)
{
return nil;
}
CommentDataItem *commentItem = [commentsArray objectAtIndex:indexPath.row];
[cell.commentText setNumberOfLines:0];
[cell.commentText setText:commentItem.text];
NSDictionary *attributes = @{NSFontAttributeName: cell.commentText.font};
CGRect rect = [cell.commentText.text boundingRectWithSize:CGSizeMake(cell.commentText.frame.size.width, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attributes
context:nil];
CGRect labelFrame = cell.commentText.frame;
labelFrame.size.height = rect.size.height;
cell.commentText.frame = labelFrame;
[cell.commentText sizeToFit];
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CommentDataItem *commentItem = [commentsArray objectAtIndex:indexPath.row];
NSString *commentText = commentItem.text;
NSDictionary *attributes = @{NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue" size:17]};
CGRect rect = [commentText boundingRectWithSize:CGSizeMake(267, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attributes
context:nil];
return rect.size.height + 50;
}
截图解释情况:
在第一次向下滚动时,这就是我所看到的:
当我向上滚动而不是向下滚动时,这就是我得到的(请注意,现在有些注释应该有多条线路)
答案 0 :(得分:1)
显然,虽然我以为我检查了它 - 但是在删除之后,单元格确实有自动布局(在xib文件中)。一切都很棒!
如果有人遇到同样的问题,请留下这个问题
答案 1 :(得分:0)
我遇到了同样的问题。原因是uiviewcontroller的xib中uitableview的宽度和uitableviewcell的xib中contentview的宽度不相同。