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

Bri*_*ian 5 background-image uinavigationbar uinavigationcontroller ios xcode4

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

我试过的代码viewDidLoad:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar-iphone.png"] forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

我能让它工作的唯一方法是在实例上设置外观UINavigationBar.喜欢:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-iphone.png"] forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

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

mat*_*att 18

viewDidLoad是搞乱appearance导航控制器导航栏代理的错误地方.在创建导航控制器之前执行此类操作.在您的应用程序委托applicationDidFinishLaunching是一个好地方.

  • 我有类似的问题.在第一次推送时,navigationBar没有使用外观代理设置的属性.但是在随后的流行音乐和推动中它再次获得了它的颜色和图像.看起来这个"外观"东西不能修改已经分配的对象,直到他们的第二次出现左右! (2认同)

the*_*nke 1

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