iOS 5 [UINavigationBar外观] setBackgroundImage不起作用

时间:2011-10-21 21:17:22

标签: ios xcode4 uinavigationcontroller uinavigationbar background-image

我在Xcode 4.2 Build 4D199中创建了一个新的测试iOS5项目,并尝试如上所述设置UINavigationBar的外观,但没有任何反应。

我在viewDidLoad中尝试的代码:

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

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

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

发生了什么事?还有其他人有这个问题吗?

3 个答案:

答案 0 :(得分:18)

viewDidLoad是错误地使用导航控制器导航栏的appearance代理。在创建导航控制器之前执行此类操作。在您的应用中,代理applicationDidFinishLaunching是个好地方。

答案 1 :(得分:1)

您是否仔细检查过图像文件是否存在?

答案 2 :(得分:1)

您需要提供barMetrics:为此工作。