我給導航條設置背景圖片在didFinishLaunchingWithOptions 方法的代碼:
UIImage *navBarImage;
navBarImage = [UIImage imageNamed:@"navbar.png"];
[[UINavigationBar appearance] setBackgroundImage: navBarImage forBarMetrics:UIBarMetricsDefault];
在app中添加一個選項,實現在切換時修改導航條的背景。但是沒成功。是不是只有在應用開始之後才能設置背景圖片?
我寫出來的代碼:
- (void) switchChanged:(id)sender {
UISwitch* switchView = sender;
if (switchView.isOn) {
UIImage *navBarImage = [UIImage imageNamed:@"black_nav.png"];
[[UINavigationBar appearance] setBackgroundImage: navBarImage forBarMetrics:UIBarMetricsDefault];
}
else {
UIImage *navBarImage = [UIImage imageNamed:@"white_nav.png"];
[[UINavigationBar appearance] setBackgroundImage: navBarImage forBarMetrics:UIBarMetricsDefault];
}
}
你要明白的是,使用
[[UINavigationBar appearance] setBackgroundImage: navBarImage forBarMetrics:UIBarMetricsDefault];
這段代碼來設置UINavigationBar 的背景,這種設置是全局的.所以其它的UINavigationBar想再設置其它的背景的時候,你會發現已經不想作用了.
如果需要自定義各個UINavigationBar的話,你可以在每個viewcontroller的 viewWillAppear: 消息中加入
[self.navigationController.navigationBar setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];