在不重新启动应用程序的情况下更改UINavigationBar背景图像

时间:2014-01-14 18:31:16

标签: ios iphone uinavigationcontroller uinavigationbar

现在,我有

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed: @"UINavigationBarBackground.png"] 
           forBarMetrics:UIBarMetricsDefault];

我希望它能够在点击时更改背景。现在,它只在您重新启动应用程序后才会更改。有没有办法让它更改导航栏的背景图像而不必重新启动应用程序?

我试过

[[UINavigationBar appearance] setNeedsDisplay];

但它崩溃了:由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [NSMethodSignature getArgumentTypeAtIndex:]:index(2)超出范围[0,1]'

如果我尝试

[self.navigationController.navigationBar setNeedsDisplay];

[self.view setNeedsDisplay];
没有任何反应。

1 个答案:

答案 0 :(得分:0)

UINavigationBar只是Apple在iOS中提供的另一个(但稍微特别)子类UIView,因此您应该能够在调整图像后立即使用"setNeedsDisplay"强制进行更新。