iOS:删除导航栏的背景(图片)

时间:2015-03-10 12:55:55

标签: ios uinavigationcontroller uinavigationbar

在我的主视图中,它包含一个菜单,我在导航栏上有一个图像。当我选择其中一个菜单项时,我想删除背景图像并正常设置文本。

当第二个视图打开时,背景图像仍然存在。我尝试了一切,在StackOverflow上得到了一些答案,但仍然得到了同样的错误。

我试过了:

- (void)viewWillDisappear:(BOOL)animated
{
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(36, 36), NO, 0.0);
    UIImage *blank = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    [[UINavigationBar appearance] setBackgroundImage:blank forBarMetrics:UIBarMetricsDefault];


    [super viewWillDisappear:animated];

}

没用。试过这个:

@implementation ViewController{
    UIImage *_bgNavigationBarImage;
}

- (void) viewWillAppear:(BOOL)animated {
    _bgNavigationBarImage = [self.navigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigation-bar-home.png"] forBarMetrics:UIBarMetricsDefault];

}


- (void)viewWillDisappear:(BOOL)animated
{
    [self.navigationController.navigationBar setBackgroundImage:_bgNavigationBarImage forBarMetrics:UIBarMetricsDefault];

    [super viewWillDisappear:animated];

}

也没用。试图将nil设置为背景但仍然无效。

1 个答案:

答案 0 :(得分:0)

完成!

使用第一种方法,但更改此内容:

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

为此:

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