Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS 5 [UINavigationBar appearance] setBackgroundImage does not do work

I created a new test iOS5 project in Xcode 4.2 Build 4D199 and tried to set the appearance of the UINavigationBar as described above, but nothing happens.

The code I tried in the viewDidLoad:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar-iphone.png"] forBarMetrics:UIBarMetricsDefault];

The only way I can get it to work is to set the appearance on the instance of the UINavigationBar. Like:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-iphone.png"] forBarMetrics:UIBarMetricsDefault];

What is going on? Has anyone else had this issue?

like image 504
Brian Avatar asked Oct 21 '11 21:10

Brian


1 Answers

viewDidLoad is the wrong place to be messing with the appearance proxy of a navigation controller's navigation bar. Do this sort of thing before the navigation controller is even created. In your app delegate's applicationDidFinishLaunching is a good place.

like image 195
matt Avatar answered Oct 01 '22 06:10

matt