1

我正在尝试为 iOS 6 实现自定义 UINavigationBar 图像背景,但我没有运气。它所显示的只是 Apple 的普通款(没有后退按钮)。我在 viewDidLoad 中尝试了以下代码(一次一个):

[[UINavigationBar appearance] setBackgroundImage:myImage forBarMetrics:UIBarMetricsDefault];

[self.navigationController.navigationBar setBackgroundImage:myImage forBarMetrics:UIBarMetricsDefault];

我通过以下方式呈现所需的视图:

optionViewController *choose= [[optionViewController alloc] initWithNibName:@"optionViewController" bundle:nil];
UINavigationController *aNavController = [[UINavigationController alloc] initWithRootViewController:choose];
[self presentViewController: aNavController animated:YES completion:nil];

任何帮助,将不胜感激。谢谢!

4

2 回答 2

2

您可以像这样设置导航栏自定义图像:-

        optionViewController *choose= [[optionViewController alloc] initWithNibName:@"optionViewController" bundle:nil];
        UINavigationController *aNavController = [[UINavigationController alloc] initWithRootViewController:choose];
        UIImage *image = [UIImage imageNamed:@"imageName"];
        [aNavController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

        [self presentModalViewController:aNavController animated:YES]; //change here to PresentViewcontroller to presentmodelViewcontroller

这是图像:-

在此处输入图像描述

在上图中,该Back按钮不是默认按钮,而是以编程方式进行的。

于 2013-01-02T10:11:49.670 回答
1

试试这个,

if([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
    //iOS 5 new UINavigationBar custom background
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbg_ForiPhone5_Imagename.png"] forBarMetrics: UIBarMetricsDefault];
} else {
    [self.navigationController.navigationBar insertSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"navbg_ForOtherIphone_Imagename.png"]] atIndex:0];
}

和有关信息转到此链接

于 2013-01-02T10:34:09.250 回答