title: Setting custom UITableViewCells height
body: <p>I am using a custom UITableViewCell which has some labels, buttons and image views to be displayed. There is one label in the cell whose text is a <code>NSString</code> object and the length of string could be variable. Due to this, I cannot set a constant height to the cell in the <code>UITableView</code>'s <code>heightForCellAtIndex</code> method. The cell's height depends on the label's height which can be determined using the <code>NSString</code>'s <code>sizeWithFont</code> method. I tried using it, but it looks like I'm going wrong somewhere. How can it be fixed?</p>
  
  <p>Here is the code used for initializing the cell.</p>
  
  <pre><code>if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier])
  {
      self.selectionStyle = UITableViewCellSelectionStyleNone;
      UIImage *image = [UIImage imageNamed:@"dot.png"];
      imageView = [[UIImageView alloc] initWithImage:image];
      imageView.frame = CGRectMake(45.0,10.0,10,10);
  
      headingTxt = [[UILabel alloc] initWithFrame:   CGRectMake(60.0,0.0,150.0,post_hdg_ht)];
      [headingTxt setContentMode: UIViewContentModeCenter];
      headingTxt.text = postData.user_f_name;
      headingTxt.font = [UIFont boldSystemFontOfSize:13];
      headingTxt.textAlignment = UITextAlignmentLeft;
      headingTxt.textColor = [UIColor blackColor];
  
      dateTxt = [[UILabel alloc] initWithFrame:CGRectMake(55.0,23.0,150.0,post_date_ht)];
      dateTxt.text = postData.created_dtm;
      dateTxt.font = [UIFont italicSystemFontOfSize:11];
      dateTxt.textAlignment = UITextAlignmentLeft;
      dateTxt.textColor = [UIColor grayColor];
  
      NSString * text1 = postData.post_body;
      NSLog(@"text length = %d",[text1 length]);
      CGRect bounds = [UIScreen mainScreen].bounds;
      CGFloat tableViewWidth;
      CGFloat width = 0;
      tableViewWidth = bounds.size.width/2;
      width = tableViewWidth - 40; //fudge factor
      //CGSize textSize = {width, 20000.0f}; //width and height of text area
      CGSize textSize = {245.0, 20000.0f}; //width and height of text area
      CGSize size1 = [text1 sizeWithFont:[UIFont systemFontOfSize:11.0f]
                          constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
  
      CGFloat ht = MAX(size1.height, 28);
      textView = [[UILabel alloc] initWithFrame:CGRectMake(55.0,42.0,245.0,ht)];
      textView.text = postData.post_body;
      textView.font = [UIFont systemFontOfSize:11];
      textView.textAlignment = UITextAlignmentLeft;
      textView.textColor = [UIColor blackColor];
      textView.lineBreakMode = UILineBreakModeWordWrap;
      textView.numberOfLines = 3;
      textView.autoresizesSubviews = YES;
  
      [self.contentView addSubview:imageView];
      [self.contentView addSubview:textView];
      [self.contentView addSubview:webView];
      [self.contentView addSubview:dateTxt];
      [self.contentView addSubview:headingTxt];
      [self.contentView sizeToFit];
  
      [imageView release];
      [textView release];
      [webView release];
      [dateTxt release];
      [headingTxt release];
  }
  </code></pre>
  
  <p>This is the label whose height and width are going wrong:</p>
  
  <pre><code>textView = [[UILabel alloc] initWithFrame:CGRectMake(55.0,42.0,245.0,ht)];
  </code></pre>