从UITableViewCell获取大小UITextView?

时间:2011-06-26 16:57:29

标签: objective-c uitableview

我的自定义UITableViewCell包含UITextView。 在UITableView加载后,我需要调整UITableViewCell的大小和UITextView中文本的大小。 所以我试着这样:

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

      resHeigth = MyCell.textView.contentSize.height;
      resHeigth += TOP_BOTTOM_MARGINS * 2;

      return resHeigth;
  }

但是在cellForRowAtIndexPath之前调用了heightForRowAtIndexPath,我实际设置了文本。

  MyViewCell *cell = (MyViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1];

    if (cell == nil) {

        [[NSBundle mainBundle] loadNibNamed:@"MyCellView" owner:self options:nil];
        cell = MyCell;
    }

    cell.textView.text  = @"Text for test\nTest";

    CGRect frame = cell.textView.frame;
    frame.size.height = cell.textView.contentSize.height;
    cell.textView.frame = frame;

那么,是否可以改变UITableViewCell的高度?

2 个答案:

答案 0 :(得分:0)

如果您将文本作为NSString提供,则可以使用NSString的实例方法sizeWithFont:constrainedToSize:lineBreakMode:来测量此字符串将采用的大小。使用它,您可以使用heightForRowAtIndexPath方法设置单元格高度。

更新: 在constrainedToSize参数中,您可以将高度设置为非常高的值(可能是int max或屏幕高度),因此它返回此字符串所需的完整高度。

答案 1 :(得分:0)

使用NSString UIKit Additions中的方法计算文字大小。

CGSize sz = [yourText sizeWithFont:cellTextFont constrainedToSize:CGSizeMake(textFieldWidth,CGFLOAT_MAX);

当约束到固定大小并且垂直无关时,将返回文本的大小(CGFLOAT_MAX是浮点数的最大值)