我有一个分组的UITableView。
我正在覆盖表行高度,但我希望第一行的动态高度基于单元格中Label的高度大小。我怎样才能达到这个高度?
{
CGFloat rowHeight = 0;
if(indexPath.section == kBioSection) {
switch(indexPath.row) {
case kBioSectionDescriptionRow:
rowHeight = 100;
break;
case kBioSectionLocationRow:
rowHeight = 44;
break;
case kBioSectionWebsiteRow:
rowHeight = 44;
break;
}
}
else {
rowHeight = 44;
}
return rowHeight;
}
答案 0 :(得分:2)
NSString有一个名为
的方法- (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode;
在UIStringDrawing.h
它将为您提供绘制该字符串所需的大小。
您可以获得所需尺寸的高度,并添加您想要的任何其他内容,例如其他标签/视图以及它们之间的空间,以计算最终高度。
这样的事情:
{
CGFloat rowHeight = 0;
if(indexPath.section == kBioSection) {
switch(indexPath.row) {
case kBioSectionDescriptionRow:
CGSize labelSize = [descriptionText sizeWithFont:labelFont forWidth:tableView.frame.size.width - 20 lineBreakMode:UILineBreakModeWordWrap]; //Assuming 10 px on each side of the label
rowHeight = labelSize + 50; //Assuming there are 50 px of extra space on the label, besides the text
break;
case kBioSectionLocationRow:
rowHeight = 44;
break;
case kBioSectionWebsiteRow:
rowHeight = 44;
break;
}
}
else {
rowHeight = 44;
}
return rowHeight;
}
答案 1 :(得分:2)
请浏览以下链接:
http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/ - 本教程清楚地向您解释如何动态增加UITableViewCell高度。
答案 2 :(得分:1)
你可以使用
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:15.0];
}
设置单元格的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = @"Go get some text for your cell.";
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
return labelSize.height + 20;//set as per your need
}