iOS 5 setBackgroundImage不起作用

我在Xcode 4.2 Build 4D199中创build了一个新的testingiOS5项目,并试图设置上面描述的UINavigationBar的外观,但没有任何反应。

我在viewDidLoad试过的代码:

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

唯一可以让它工作的方法是在UINavigationBar的实例上设置外观。 喜欢:

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

到底是怎么回事? 其他人遇到过这个问题吗?

viewDidLoad是与导航控制器的导航栏的appearance代理混淆的错误的地方。 在导航控制器创build之前做这样的事情。 在你的应用程序中,delegate的applicationDidFinishLaunching是个好地方。

你仔细检查过Imagefile是否存在?

您将需要提供forBarMetrics:为此工作。