Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

iOS

Mike Bronner
Mike Bronner
16,395 Points

How to resize TableViewCell (in static TableView) based on it's content?

I have set up a static TableView and have varying lengths of texts in each cell. How can I dynamically adjust the height of the cell to accommodate the contained TextView object?

Thanks! :)

PS: if this was covered in a session video, I don't remember which one. I looked at the Pun videos, but the static table there was adjusted manually (it was the only video session with a static table, if I remember correctly).

4 Answers

Mike Bronner
Mike Bronner
16,395 Points

Pavel, thanks for all your support in this endeavor. I finally found a solution (this didn't require the first method definition at all):

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat height = 0.0;

    if (indexPath.row == 4 && indexPath.section == 1)
    {
        NSString *text = self.description.text;
        height = [text sizeWithFont:[UIFont systemFontOfSize:10] constrainedToSize:CGSizeMake(240,300) lineBreakMode:NSLineBreakByWordWrapping].height;
    }

    return height + 44;
}

Too bad there isn't a solution that can be implemented just using the storyboard, i.e. specifying objects to conform to their content size.

Hi Mike Bronner - what would the Swift equivalent of this line be? Thanks for your help.

 height = [text sizeWithFont:[UIFont systemFontOfSize:10] constrainedToSize:CGSizeMake(240,300) lineBreakMode:NSLineBreakByWordWrapping].height;
Mike Bronner
Mike Bronner
16,395 Points

This seems to have solved half the problem in that the text view component now expands as expected, but the cell (or row?) doesn't, resulting in the textview component expanding out of the bounds of the cell.

Here is my code that I have in my custom tableviewcontroller class:

- (void)textViewDidChange:(UITextView *)textView
{
    numberOfLines = (textView.contentSize.height / textView.font.lineHeight) - 1;

    float height = 44.0;
    height += (textView.font.lineHeight * (numberOfLines - 1));

    CGRect textViewFrame = [textView frame];
    textViewFrame.size.height = height - 10.0; //The 10 value is to retrieve the same height padding I inputed earlier when I initialized the UITextView
    [textView setFrame:textViewFrame];

    [self.tableView beginUpdates];
    [self.tableView endUpdates];

    [self.description setContentInset:UIEdgeInsetsZero];
}

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat result = 44;

    if (indexPath.section == 2)
    {
        result += (self.description.font.lineHeight * (numberOfLines - 1));
    }

    return result;
}

In the - (void)textViewDidChange:(UITextView *)textView method, add this code:

UITableViewCell *cell = (UITableViewCell *) textView.superview;

UIView *contentView = cell.contentView;

[self.tableView beginUpdates]; [self.tableView endUpdates];

[contentView setFrame:CGRectMake(0, 0, contentView.frame.size.width, (textView.frame.size.height+ V_PADDING))];

to change the actual cell height as well.

Mike Bronner
Mike Bronner
16,395 Points

Thanks for this. Unfortunately I don't see a change. Additionally, the V_PADDING constant was not recognized (I had to remove it). Here's my updated code, with the resulting screenshots.

  • (void)textViewDidChange:(UITextView *)textView { numberOfLines = (textView.contentSize.height / textView.font.lineHeight) - 1;

    float height = 44.0;
    height += (textView.font.lineHeight * (numberOfLines - 1));
    
    CGRect textViewFrame = [textView frame];
    textViewFrame.size.height = height - 10.0; //The 10 value is to retrieve the same height padding I inputed earlier when I initialized the UITextView
    [textView setFrame:textViewFrame];
    
    [self.tableView beginUpdates];
    [self.tableView endUpdates];
    
    [self.description setContentInset:UIEdgeInsetsZero];
    UITableViewCell *cell = (UITableViewCell *) textView.superview;
    
    UIView *contentView = cell.contentView;
    
    [self.tableView beginUpdates];
    [self.tableView endUpdates];
    
    [contentView setFrame:CGRectMake(0, 0, contentView.frame.size.width, (textView.frame.size.height))];
    

    }

    • (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { CGFloat result = 44;

      if (indexPath.row == 4 && indexPath.section == 1) { result += (self.description.font.lineHeight * (numberOfLines - 1)); } NSLog(@"Row %d: %1.2f", indexPath.row, result);

      return result; }

[photo](data:image/jpeg;base64,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)

I bought the code for this app:

http://www.chupamobile.com/products/details/855/Tasks+-+To+Do+%26+Shopping+Lists/

and it contains the functionality you need.

define V_PADDING 12.0f

Below, you can see how the entire method looks like:

  • (void)textViewDidChange:(UITextView *)textView {

    ListItem* item = [self getArrayItemFromID: textView.tag]; if (!item) return; int idx = [self.completeListArray indexOfObject:item]; // cell index

    // update item name item.name = textView.text; //[[GlobalListEditor instance] updateItem:item fromList:self.list.idx]; // TODO: move this elsewhere to improve performance!

    // get cell NSUInteger i[2] = {0, idx}; NSIndexPath* indexPath = [NSIndexPath indexPathWithIndexes:i length:2]; ListTableViewCell cell = (ListTableViewCell)[self._tableView cellForRowAtIndexPath:indexPath];

    // update height [self setTextViewSize:textView]; // set proper text view size UIView *contentView = cell.contentView;//textView.superview; // (1) the padding above and below the UITextView should each be 6px, so UITextView's // height + V_PADDING should equal the height of the UITableViewCell // (2) if they are not equal, then update the height of the UITableViewCell if ((textView.frame.size.height + V_PADDING) != contentView.frame.size.height) { [_tableView beginUpdates]; [_tableView endUpdates]; [contentView setFrame:CGRectMake(0, 0, contentView.frame.size.width, (textView.frame.size.height+V_PADDING))]; } }

Mike Bronner
Mike Bronner
16,395 Points

I updated the link to the screenie to show correctly. It appears that the textview isn't actually expanding to fit the size.