更改UINavigationBar背景图片而不重新启动应用程序

现在,我有

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

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

我试过了

 [[UINavigationBar appearance] setNeedsDisplay]; 

但它崩溃了:由于未捕获的exception“NSInvalidArgumentException”,原因:' – [NSMethodSignature getArgumentTypeAtIndex:]:索引(2)越界[0,1]

如果我尝试

 [self.navigationController.navigationBar setNeedsDisplay]; 

要么

 [self.view setNeedsDisplay]; 

什么都没发生。

UINavigationBar是苹果在iOS中提供的另一个(但稍微特别的)子类UIView,所以你应该可以在调整图像后使用类似“ setNeedsDisplay ”的东西来强制更新。