Mt rootViewController (i.e the first viewcontroller) is not occupying full screen, while the other VCs do (see screenshot). In IB, they look identical. I am using iOS 6 / iOS 5.1 simulator.
My AppDelegate method looks innocent. Any suggestions?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// hide status bar
[UIApplication sharedApplication].statusBarHidden = YES;
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// allocate the root view controller
_window.rootViewController = [[LMHomeViewController alloc] init];
// add a navigation controller
[LMNavigationController initSharedInstanceWithRootViewController:self.window.rootViewController];
[_window addSubview:LMNavigationController.sharedInstance.view];
// show the window
[_window makeKeyAndVisible];
return YES;
}

Hide the status bar in your LMHomeViewController xib file.
In your info.plist set “Status bar is initially hidden” to YES.
I think the problem is that your LMHomeViewController get “rendered with a status bar” and then you add this view to a view without a status bar, so there is a 20 px gap.