同様の質問がほぼ何十回も尋ねられていることがわかりますが、どの回答も私の問題を解決していません (または、疲れすぎて回答を正しくフォローしていません)。
カスタムセルを含むテーブルビューがあります。
セルはこんな感じ
セルは、UITableViewCell から派生した ResultsViewCell 型です。
セルの最後のラベルは複数行セルです。そのセルは、次のセルの内容と重なる場合があります。
これが私の cellForRowAtIndexPath 関数です
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"StandardSearchResultCell";
ResultsViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
Data *theData = [Data getInstance];
Company *theCompany = [theData.results objectAtIndex:indexPath.row];
cell.lblTitle.text = theCompany.DisplayName;
cell.lblDescription.text = theCompany.Description;
cell.lblAddressPt1.text = theCompany.AddressPt1;
cell.lblAddressPt2.text = theCompany.AddressPt2;
cell.lblPhone.text = theCompany.Phone;
cell.lblEmail.text = theCompany.Email;
cell.lblDescription.adjustsFontSizeToFitWidth = false;
cell.lblDescription.lineBreakMode = UILineBreakModeWordWrap;
cell.lblDescription.numberOfLines = 0;
[cell.lblDescription sizeToFit];
///////////////////////////////////////////
//edit -Added after David H's answer, but it didn't solve the problem
cell.contentView.clipsToBounds = false;
UIFont *cellFont = [UIFont systemFontOfSize:12.0];
CGSize constraintSize = CGSizeMake(270.0f, MAXFLOAT);
CGSize labelSize = [theCompany.Description sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
[cell.contentView setFrame:CGRectMake(cell.contentView.frame.origin.x, cell.contentView.frame.origin.y, 270, 90 + labelSize.height)];
//end of edit
///////////////////////////////////////
return cell;
}
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
Data *theData = [Data getInstance];
Company *theCompany = [theData.results objectAtIndex:indexPath.row];
UIFont *cellFont = [UIFont systemFontOfSize:12.0];
CGSize constraintSize = CGSizeMake(270.0f, MAXFLOAT);
CGSize labelSize = [theCompany.Description sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
return (90.0f + labelSize.height);
}
私は何を間違っていますか?