Objective-C 如何设置UINavigationBar 的背景?

How to set the background of UINavigationBar in Objective-C ?

我正在尝试更改 UINavigationBarbackground

我已经把图片放到了Images.xcassetsxib文件是TableView

我在viewDidLoad中写了[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bar-background.png"] forBarMetrics:UIBarMetricsDefault];,如下所示。

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view from its nib.

        UIView* bview = [[UIView alloc] init];
        bview.backgroundColor = [UIColor groupTableViewBackgroundColor];

        //self.title = NSLocalizedString(@"WiFi Camera Viewer", nil) ;
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bar-background.png"] forBarMetrics:UIBarMetricsDefault];
}

但是UINavigationBar没有显示像下面这样的图片

如何在Objective-C中设置UINavigationBar的背景?

我是不是遗漏了什么?提前致谢。

您使用的代码是旧的,从 iOS 7 开始您可以使用下面的代码

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"YourImage"] forBarMetrics:UIBarMetricsDefault];

如果您提供 44px 高度的图片,它将仅覆盖导航栏而不覆盖状态栏,如果您提供 66px 高度的图片,它将同时覆盖它们