UITableViewCell的dynamic高度
好吧,在你把这个标记为重复的问题之前,请阅读它。 我已经实现了CIMGF给出的用于UITableViewCell
dynamicresize的代码。 它第一次工作,但似乎现在没有工作。 奇怪,对吧? 无论如何,这里是代码片段:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; { NSString *text = [[buzzList objectAtIndex:[indexPath row]] objectForKey:@"description"]; CGSize constraint = CGSizeMake(260, 20000.0f); CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; CGFloat height = size.height; return height +25 +(CELL_CONTENT_MARGIN * 2); }
和cellForRowAtIndexPath
的相应代码是:
[cell.descriptionLabel setLineBreakMode:UILineBreakModeWordWrap]; [cell.descriptionLabel setMinimumFontSize:FONT_SIZE]; [cell.descriptionLabel setNumberOfLines:0]; [cell.descriptionLabel setFont:[UIFont systemFontOfSize:FONT_SIZE]]; CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); CGSize size = [[[buzzList objectAtIndex:indexPath.row] objectForKey:@"description"] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; cell.descriptionLabel.text=[[buzzList objectAtIndex:indexPath.row] objectForKey:@"description"]; CGRect rect=CGRectMake(45, 20, 260, size.height); [cell.descriptionLabel setFrame:rect];
其中值45,20,260由我设置,以获得单元格中文本的起始点的确切位置以及它的宽度。 这些值是正确的,不需要修改。 但是,当我执行代码时,我为单元格获得了正确的高度(根据文本dynamic调整), BUT
descriptionLabel
最多显示2行文本。 之后它会截断文本。 🙁
描述标签的约束包含两个常量CELL_CONTENT_WIDTH
和CELL_CONTENT_MARGIN
,而您正在创build的CGRect
包含一个数字(260)。 如果CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2)
> 260那么这应该是你的问题。