/* * 设置子项cell **/ - (UITableViewCell *)getChildCell:(UITableView *)tableView and:(NSIndexPath *)indexPath { CourseWareModel * childModel = [self isChild:indexPath]; UITableViewCell * cell; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil]; } //设置Cell不可点击 cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.textLabel.text = childModel.courseWareName; cell.textLabel.font = [UIFont systemFontOfSize:14]; cell.textLabel.textColor = [PlistResourceUtil getColor:@"courselist_name"]; cell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping; //显示最右边的箭头 cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; //获得当前cell高度 CGRect frame = [cell frame]; //设置label的最大行数 cell.textLabel.numberOfLines = 10; CGSize size = CGSizeMake(300, 1000); CGSize labelSize = [cell.textLabel.text sizeWithFont:cell.textLabel.font constrainedToSize:size lineBreakMode:NSLineBreakByClipping]; cell.textLabel.frame = CGRectMake(cell.textLabel.frame.origin.x, cell.textLabel.frame.origin.y,labelSize.width, labelSize.height); //计算出自适应的高度 frame.size.height = labelSize.height+16; cell.frame = frame; return cell; }
然后在heightForRowAtIndexPath方法中返回cell的height
#pragma mark - 大小样式设置 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if ([self isGroup:indexPath]) { CourseGroupCell * cell = [self getGroupCell:tableView and:indexPath]; CGFloat height = cell.frame.size.height; return height; // return 48; // 分组高 } UITableViewCell * cell = [self getChildCell:tableView and:indexPath]; CGFloat height = cell.frame.size.height; return height; // return 40; // 行高 }