我正在尝试使用代码更改导航栏的背景:
- (void)viewDidLoad
{
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"header_bg_smooth.png"] forBarMetrics:UIBarMetricsDefault];
[super viewDidLoad];
...
}
它可以工作,但我遇到的问题是,当您返回此代码所在的视图时,更改首先生效。因此,您转到此视图时导航栏不会更改,但如果您继续更改,然后返回此视图,则更改将生效。
有没有人知道问题可能是什么?
提前致谢
答案 0 :(得分:2)
- (void)viewDidLoad
{
[super viewDidLoad];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"header_bg_smooth.png"] forBarMetrics:UIBarMetricsDefault];
...
}
答案 1 :(得分:1)
viewDidLoad
仅在加载视图时触发一次。要在每次看到视图时运行代码,请将代码放在viewDidAppear
或viewWillAppear
中(取决于您的使用情况)
此answer可帮助您从viewDidLoad
,viewDidAppear
或viewWillAppear
中进行选择。
答案 2 :(得分:0)
使用setBackgroundImage:forBarMetrics:
方法:并在viewWillAppear
[navbar setBackgroundImage:[UIImage imageNamed:@"navbar"]
forBarMetrics:UIBarMetricsDefault];
这对你有很大的帮助....
答案 3 :(得分:0)
试试这个..
UIView *backgroundView = ...
[navigationBar insertSubview:backgroundView atIndex:0];
另请参阅此链接.... setting-custom-background-for-uinavigationbar-what-will-work-on-ios5-and-ios4-too