UINavigationController bar covers its uiviewcontroller's content

In iOS7, UINavigationBar has translucent property and views of child VCs of UINavigationViewController are underneath UINavigationBar by default.

If you don't need this translucent effect, turn off this property by using the following code.

self.navigationController.navigationBar.translucent = NO

You can also use @ldindu's way as well.


If you are running on iOS 7.0 version then you need to set following property which is newly introduced in iOS 7.0 as follows

self.edgesForExtendedLayout = UIRectEdgeNone; 

as by default edgesForExtendedLayout property is set to UIRectEdgeAll that means the view controllers use full-screen layout by default.