2

我正在使用自定义导航栏。在我的AppDelegate我已经这样做了。

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar"] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setTitleTextAttributes: @{
                            UITextAttributeTextColor: [UIColor whiteColor],
                      UITextAttributeTextShadowColor: [UIColor whiteColor],
                     UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],
                                 UITextAttributeFont: [UIFont fontWithName:@"Carrois Gothic" size:18.0f]
 }];

viewController级别上,我将按钮放在navigationController. 总而言之viewControllers,我只有一个按钮navigationbar

但是在一个 VC 中,我需要设置 2 个按钮,并且我还更改backgroundImagenavigationbar. 所以我复制了与上面相同的代码,ViewDidLoad但现在使用其他图像。这是有效的。

但现在我想在所有其他 VC 中的第一个navigationbar. 所以在我的viewDidDisappear我再次复制了另一个图像的代码。

以下是错误的:

  • 背景图像没有改变
  • leftbarbutton 不会消失

有人可以帮我吗?

PS:我正在使用tabbarcontroller. 因此,如果我说切换 VC,我的意思是转到 tabbarcontroller 中的另一个选项卡

4

1 回答 1

11

不要在 ViewController 中使用外观代理。直接设置背景即可:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar"] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setTitleTextAttributes: @{
                         UITextAttributeTextColor: [UIColor whiteColor],
                  UITextAttributeTextShadowColor: [UIColor whiteColor],
                 UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],
                             UITextAttributeFont: [UIFont fontWithName:@"Carrois Gothic" size:18.0f]
}];
于 2013-07-26T08:15:47.927 回答