我正在使用自定义导航栏。
在我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
中,我只有backgroundImage
内的一个按钮。
但是在一个VC中我需要设置2个按钮,我也会更改navigationbar
的{{1}}。那么我在ViewDidLoad
中复制了与上面相同的代码,但现在又复制了其他图像。这很有效。
但现在我想要所有其他VC的第一个navigationbar
。所以在我的viewDidDisappear
我再次使用另一张图片复制了代码。
以下是错误的:
有人可以帮我吗?
PS:我正在使用tabbarcontroller
。因此,如果我说切换VC,我的意思是转到tabbarcontroller中的另一个标签
答案 0 :(得分:12)
不要在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]
}];