iPhone:如何根据字符串动态增加单元格的高度

时间:2011-12-29 09:05:47

标签: iphone objective-c uitableview

我在我的应用程序中使用带有标题的UITableView,我想在tableview的单元格中添加字符串。在标题下面的单元格中,我想填充字符串数据,并根据字符串的大小我想增加单元格的高度

为了更好地理解,我附上了文件。

我查看了link1link2link3

但我无法得到我想要的答案。

为了更好地理解我也附加了图像。

enter image description here

标签说明指示我的标题,在下一个单元格中我想添加字符串。

那么如何根据字符串长度增加单元格的高度。

提前完成。

3 个答案:

答案 0 :(得分:2)

实施方法

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
   //return appropriate value based on IndexPath.row

  UIFont *font = textLabel.font; // use custom label's font
  NSString *myText = @"your text for row at index path";
  CGSize size = [myText sizeWithFont:font forWidth:textLabel.frame.size.width lineBreakMode:UILineBreakModeWordWrap];
  return (size.height+20); //10 pixels space above the textlabel and below 10 pixels space
}

如您所提及的链接中所述。

答案 1 :(得分:1)

使用以下委托方法:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
   //return appropriate value based on IndexPath.row
}

在此方法中,从数据源aray中,检查特定行的字符串长度并相应地返回高度。

答案 2 :(得分:0)

尝试使用此代码获取单元格大小。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{


    NSString *text =@"your String";

    CGSize constraint = CGSizeMake(CellContentWidth - (CellMargin * 2), 20000.0f);

    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

    CGFloat height = MAX(size.height, 44.0f);


    return height + (cellMargin* 2);

}

此代码用于单元格标签高度。

    NSString *text = [arr objectAtIndex:indexPath.row];

    CGSize constraint = CGSizeMake(labelwidth , 20000.0f);

    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

    CGFloat height = MAX(size.height, 44.0f);

    cell.lbl3.frame=CGRectMake(X,Y ,W, height);