Problem setting dynamic UITableViewCell height

Posted by HiveHicks on Stack Overflow See other posts from Stack Overflow or by HiveHicks
Published on 2011-01-06T14:24:22Z Indexed on 2011/01/06 14:53 UTC
Read the original article Hit count: 149

Filed under:
|
|
|
|

I've got a UITableView with two dynamic rows. Each of the rows is a subclass of UITableViewCell and is loaded from nib. As my rows contain dynamic content, I use layoutSubviews to reposition all subviews:

- (void)layoutSubviews
{
 [super layoutSubviews];

 CGFloat initialHeight = titleLabel.bounds.size.height;
 CGSize constraintSize = CGSizeMake(titleLabel.bounds.size.width, MAXFLOAT);
 CGSize size = [titleLabel.text sizeWithFont:titleLabel.font constrainedToSize:constraintSize];
 CGFloat delta = size.height - initialHeight;

 CGRect titleFrame = titleLabel.frame;
 titleFrame.size.height += delta;
 titleLabel.frame = titleFrame;

 locationLabel.frame = CGRectOffset(locationLabel.frame, 0, delta); 
 dayLabel.frame = CGRectOffset(dayLabel.frame, 0, delta);
 timeLabel.frame = CGRectOffset(timeLabel.frame, 0, delta);
}

The problem is that I can't find a way to determine the height in table view delegate's tableView:heightForRowAtIndexPath: method.

The trick is that I load cell from nib, so just after it's loaded titleLabel.bounds.size.width is 300 px (as in nib), not taking into account type of the device (iPhone/iPad) and current orientation, so it seems impossible to calculate the height without conditional checks for orientation and device type. Any ideas?

© Stack Overflow or respective owner

Related posts about iphone

Related posts about cocoa