/* * 設置子項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; // 行高 }