Navbar不会立即改变背景 - IOS

时间:2013-04-24 07:37:09

标签: iphone ios objective-c navbar

我正在尝试使用代码更改导航栏的背景:

- (void)viewDidLoad
{
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"header_bg_smooth.png"] forBarMetrics:UIBarMetricsDefault];

    [super viewDidLoad];
...

}

它可以工作,但我遇到的问题是,当您返回此代码所在的视图时,更改首先生效。因此,您转到此视图时导航栏不会更改,但如果您继续更改,然后返回此视图,则更改将生效。

有没有人知道问题可能是什么?

提前致谢

4 个答案:

答案 0 :(得分:2)

 - (void)viewDidLoad
{
    [super viewDidLoad];
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"header_bg_smooth.png"] forBarMetrics:UIBarMetricsDefault];
...

}

答案 1 :(得分:1)

viewDidLoad仅在加载视图时触发一次。要在每次看到视图时运行代码,请将代码放在viewDidAppearviewWillAppear中(取决于您的使用情况)

answer可帮助您从viewDidLoadviewDidAppearviewWillAppear中进行选择。

答案 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