导航栏有一个方法:
- (void)setBackgroundImage:(nullable UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
这个方法有两种使用方式
第一种:
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbarBackgroundWhite"] forBarMetrics:UIBarMetricsDefault];
第二种:
UINavigationBar *bar = [UINavigationBar appearance]; [bar setBackgroundImage:[UIImage imageNamed:@"navigationbarBackgroundWhite"] forBarMetrics:UIBarMetricsDefault];
第二种使用方式不管你是使用的哪个 导航栏控制器创建的界面,都会显示 你设置的这一个图片背景。
如果只是想要在“WYNavigationController.m”中实现这个背景图片,其他的导航栏控制器都不实现的话:
添加一句:
// 当导航栏用在XMGNavigationController中, appearance设置才会生效 UINavigationBar *bar = [UINavigationBar appearanceWhenContainedIn:[self class], nil]; [bar setBackgroundImage:[UIImage imageNamed:@"navigationbarBackgroundWhite"] forBarMetrics:UIBarMetricsDefault];
这样就OK.
这样运行后,会发现 四个一级控制器都会创建一遍,如果只想让控制器创建一遍,就使用
/** * 当第一次使用这个类的时候会调用一次 */ + (void)initialize { // 当导航栏用在XMGNavigationController中, appearance设置才会生效 // UINavigationBar *bar = [UINavigationBar appearanceWhenContainedIn:[self class], nil]; UINavigationBar *bar = [UINavigationBar appearance]; [bar setBackgroundImage:[UIImage imageNamed:@"navigationbarBackgroundWhite"] forBarMetrics:UIBarMetricsDefault]; }