Dynamically resize UITableView in UIViewController created in Storyboard

ios, iphone, objective-c, uistoryboard, uitableview

Solution

Set an auto layout constraint for the height of the table view in your storyboard. Then connect the constraint to an outlet in your view controller so you can access the constraint in your code. Have the constraint be set to 88. When you want to change the height of the table view, just change the constraint's constant to 132.

Problem

In a UIViewController on a storyboard, I have a UITableView that is sized specifically to have two rows in one section with no header or footer, i.e. the height is `88.0f`. There are some cases when I want to add a third row. So in `viewWillAppear:animated:` (and other logical places) I set the frame to be 44.0f logical pixels higher: ``` CGRect f = self.tableView.frame; self.tableView.frame = CGRectMake(f.origin.x, f.origin.y, f.size.width, f.size.height + 44.0f); NSLog(@"%@",NSStringFromCGRect(self.tableView.frame)); ``` Nothing controversial; pretty standard resize code, and yet... It doesn't work! The tableView height doesn't change visually. The NSLog statement reports the height I expect (`132.0f`). Is this because I'm using Storyboards? I'm not sure why this isn't working.

Original source