iosobjective-cios7uinavigationbaruistatusbar

How to prevent UINavigationBar from covering top of view in iOS 7?


After updating to Xcode 5, the navigation bars in all of my app's views have shifted down. Here are some screenshots, the first showing everything in the view as it's pulled down, and the second showing all of it untouched. The search bar should begin where the navigation bar.

All Content All Content on Idle

Anyone know how I can fix this?

edit: i have tried this previously recommendation:

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;

But it yields very odd results.

Solution Attempt

This may be because I have a "slide menu" under this view controller that is appearing due to the transparency of the navigation bar.


Solution

  • Set the navigation bar's translucent property to NO:

    self.navigationController.navigationBar.translucent = NO;
    

    This will fix the view from being framed underneath the navigation bar and status bar.

    If you have to show and hide the navigation bar, then use

     if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;   // iOS 7 specific
    

    in your viewDidLoad method.