A UITableViewController
's view
property is a UITableView
. So you cannot shrink it's view
to reveal what's behind, since there is nothing (At least as far as it's concerned) behind it.
There is a relatively easy solution. I'm assuming, based on your code sample that you have a UITableView
property on your controller named "tableView
", if not it's creation would be necessary.
1) Change your view controller to be a UIViewController
subclass instead of a UITableViewController
subclass. Easily done in the .h
by replacing YourClass:UITableViewController
with YourClass:UIViewController
.
2) In the .xib
file drag out a new UIView
to the canvas (not on the tableView).
3) Drag the tableView to be a subview of the view, as shown:

4) Connect the File's Owner's view property to be the UIView you just added.
5) Check that your connections look something like this:

With these changes you can now set your frame to be smaller than your view's size. You have two choices how to do this:
1) Use code like this code:
-(void)viewDidLoad{
[super viewDidLoad];
// set background red to see change
self.view.backgroundColor = [UIColor redColor];
CGFloat sideMargin = 10;
CGFloat topBottomMargin = 44;
CGFloat originX = sideMargin;
// compute width based on view size
CGFloat sizeWidth = (self.view.bounds.size.width - (sideMargin * 2));
CGFloat originY = topBottomMargin;
// compute height based on view size
CGFloat sizeHeight = (self.view.bounds.size.height - (topBottomMargin * 2));
// set tableView frame
self.tableView.frame = CGRectMake(originX, originY, sizeWidth, sizeHeight);
}
2) Change the setting in interface builder directly. Something like:
