- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero]; label.tag = 1; label.lineBreakMode = UILineBreakModeWordWrap; label.highlightedTextColor = [UIColor whiteColor]; label.numberOfLines = 0; label.opaque = NO; // 选中Opaque表示视图后面的任何内容都不应该绘制 label.backgroundColor = [UIColor clearColor]; [cell.contentView addSubview:label]; [label release]; } UILabel *label = (UILabel *)[cell viewWithTag:1]; NSString *text; text = [textArray objectAtIndex:indexPath.row]; CGRect cellFrame = [cell frame]; cellFrame.origin = CGPointMake(0, 0); label.text = text; CGRect rect = CGRectInset(cellFrame, 2, 2); label.frame = rect; [label sizeToFit]; if (label.frame.size.height > 46) { cellFrame.size.height = 50 + label.frame.size.height - 46; } else { cellFrame.size.height = 50; } [cell setFrame:cellFrame]; return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; //UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath]; return cell.frame.size.height; }