Просто чтобы добавить к ответу Рикстера, у меня была похожая проблема с UITableViewController, и было необходимо добавить
[self.view layoutIfNeeded];
[self.tableView layoutIfNeeded];
в -viewDidLoad. Ни одно из вышеприведенных утверждений не сработало само по себе.