我有一个UITableViewCell,detailTextLabel导致单元格框架依赖于它的大小。
我的代码是:
索引方法行的单元格
cell.textLabel.text = @"Rights";
cell.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.detailTextLabel.numberOfLines = 0;
cell.detailTextLabel.text = [self getItemForKey:kRights];
cell.textLabel.font = [UIFont systemFontOfSize:15];
cell.detailTextLabel.font = cell.textLabel.font;
cell.textLabel.textColor = [UIColor colorWithRed:54.0f/255.0f green:54.0f/255.0f blue:54.0f/255.0f alpha:1.0f];
CGSize constraintSize = CGSizeMake(310.0f, MAXFLOAT);
CGSize labelSize = [[cell.detailTextLabel text] sizeWithFont:[cell.detailTextLabel font] constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
cell.detailTextLabel.frame = CGRectMake( 0, 0, 310, labelSize.height);
cell.userInteractionEnabled = YES;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.accessoryType = UITableViewCellAccessoryNone;
索引方法行的高度
if (indexPath.row == 3){
NSString *text = [self getItemForKey:kRights];
CGSize constraintSize = CGSizeMake(310.0f, MAXFLOAT);
CGSize labelSize = [text sizeWithFont:[UIFont systemFontOfSize:15]
constrainedToSize:constraintSize
lineBreakMode:UILineBreakModeWordWrap];
return labelSize.height+11;
}
但是,如果标签的尺寸太大,则细胞彼此重叠。请问您能告诉我如何防止这种情况发生?
这是一张图片,向您展示我的问题:
答案 0 :(得分:1)
您是否忘记了在索引方法行的高度,是否考虑了单元格的其余内容?您将在detailTextLabel的高度上添加11个点。它看起来不够。运行[@“Rights”sizeWithFont:[UIFont systemFontOfSize:15]]返回高度19.所以,你需要那么多来考虑textLabel高度,以及你在textLabel和amp;之间留下的任何空间。细节,加上单元格中的顶部和底部边距,以及单元格的任何其他内容。
此外,从您的屏幕截图来看,您可能会在此特定单元格中重叠内容。这可能是您为detailTextLabel设置的框架的结果:
cell.detailTextLabel.frame = CGRectMake( 0, 0, 310, labelSize.height);
您可以将帧的原点设置为(0,0),即单元格的左上角。这将使detailTextLabel与单元格的textLabel重叠。
希望这有用。