Double Navigation Bar when I set translucent to NO - ios

When i set this code in viewDidLoad:
[self.navigationController.navigationBar setTranslucent:NO];
and run the project in xcode, it creates other nav bar above of my main nav bar.
Anyone know what is it?

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = [UIColor clearColor];
The code above set the nav bar from translucent to solid without hide or create an other nav bar.

Related

iOS Make Navigation Bar transparent, while at the same time, preventing view to slide under Navigation Bar

My problem is, when I set the navBar to transparent with this code:
[[self navigationController] setNavigationBarHidden:NO animated:YES];
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
[self.navigationController.navigationBar setTranslucent:YES];
.. the navigationbar hides the top of the viewcontroller's view:
I tried to prevent this with:
self.edgesForExtendedLayout = UIRectEdgeNone;
... but then, the navbar is not transparent anymore.
How can I achieve both?

How to make UINavigationBar fully transparent or gone like this only title and UIBarButtonItem could be seen

As you can see, the UINavigationBar is fully transparent. Only the title and UIBarButtonItem is visible. And the status bar has the same colour as UITableView's background colour. Right now, I have finished to make the table view and cell has the same effect as the pic. But how to make the navigation bar and the status bar has the effect too?
Try this one
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = [UIColor clearColor];
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
Try this !
[self.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]];
[self.navigationController.view setBackgroundColor:[UIColor clearColor]];
[self.navigationController.navigationBar setBarTintColor:[UIColor clearColor]];

Revert navigation bar's background image to default

At first, I set navigation bar's background to translucent.
barImage=[[self.navigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault] copy];//barImage is a UIImage point
[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
It works well.
Now I need to revert navigation bar's background image to default.
- (void)dealloc
{
[self.navigationController.navigationBar setBackgroundImage:barImage
forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = nil;
}
This doesn't work. What should I do?
Not sure if you're still stuck on this, but here's the code to reverse the effect. I borrowed a navigation controller, and copied everything over to the original navigation controller.
UINavigationController *tempNavigationController = [[UINavigationController alloc]initWithRootViewController:[[UIViewController alloc]init]];
[self.navigationController.navigationBar setBackgroundImage:[tempNavigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault]
forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [tempNavigationController.navigationBar shadowImage];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = tempNavigationController.view.backgroundColor;
tempNavigationController = nil;

Extend app background image to Navigation Bar and Status Bar

I am trying to get an effect like this:
http://dribbble.com/shots/1473643-Fashion-app/attachments/219674
Basically I would like to extend the app background image to the Navigation Bar and the Status Bar.
Any ideas how to do this.
The following lines of code inside viewDidLoad of your vc will help you to have a similar effect:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
[self.navigationController.navigationBar setTitleTextAttributes:#{NSForegroundColorAttributeName : [UIColor whiteColor]}];
self.navigationController.navigationBar.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.3];

navigation controller bar is being cut off

If hiding the status bar by choosing status bar style = hide during application launch and I am customizing uinavigation bar like the following
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed: #"navbar-iphone.png"]
forBarMetrics:UIBarMetricsDefault];
and when I am getting this : the navigation bar is cut off the top.
and
Any ideas about this situation and how to fix it ?
You can try this.
during application launch. here viewController is UINavigationController.
//set status bar hidden true.
[[UIApplication sharedApplication]setStatusBarHidden:YES];
//You can set navigation bar frame to start from 0.0,0.0
self.viewController.navigationBar.frame = CGRectOffset(self.viewController.navigationBar.frame, 0.0, -20.0);
//set the image u want.
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed: #"navbar-iphone.png"]
forBarMetrics:UIBarMetricsDefault];
Or
[[UIApplication sharedApplication]setStatusBarHidden:YES];
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed: #"navbar-iphone.png"]
forBarMetrics:UIBarMetricsDefault];
[self.viewController setWantsFullScreenLayout:YES];

Resources