When self.navigationController.navigationBar.translucent = NO
, a white space occur under the navigation bar, like this:
How can I remove it?
// From above example
(void)loadUI
{
[self.countriesButton setBackgroundColor:[UIColor colorWithRed:(243/255.0) green:(178/255.0) blue:(128/255.0) alpha:1]];
[self.countriesButton.layer setCornerRadius:10];
[self.countriesButton setClipsToBounds:YES];
/// set attributes for Navigation Bar
self.navigationItem.title = @"Welcome"; // Title of Navigation Bar
self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:(243/255.0) green:(178/255.0) blue:(128/255.0) alpha:1];
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]};
self.navigationController.navigationBar.translucent = NO;
}
Im gonna chime in how i solved this one since it was easy and worked well.
In your storyboard select the view controller that is getting the whitespace under the opaque navbar.
Then go to 'Attributes Inspector' -> 'View Controller' -> 'Extend Edges' -> Check the box that says 'Under Opaque Bars'
Try with
self.automaticallyAdjustsScrollViewInsets = NO
This is introduced in iOS7 and app will crash if you don't check system version before calling.
You can also set this from storyboard 'Adjust Scroll View Insets'
Try
self.wantsFullScreenLayout = YES;
The problem happens when you switch between translucent and opaque. I don't really know why, but the view is automatically resized. It is the same when you switch from opaque to translucent, the view expands at the top.
My guess is that you are probably setting somewhere else the bar as translucent. In the xib file or previously in the code.
try adding a 0 px image as shadow of navbar
[self.navigationController.navigationBar setShadowImage:[UIImage new]];