5.0之后,直接能设置导航栏的背景图片。
UINavigationController *navigation=[[UINavigationController alloc] initWithRootViewController:youViewController];
[navigation.navigationBar setBackgroundImage:[UIImage imageNamed:@""] forBarMetrics:UIBarMetricsDefault];
当SDK小于5.0的时候,运行时会崩溃报错。这个时候就要兼容5.0之前SDK。
先判断是否能调用setBackgroundImage函数,来确定用什么方式来设置背景图片
if ([navigation.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) {
}
这个判断是判定当前是否能响应这个函数,证明是5.0以后的SDK,当然这里也能判断当前SDK的版本号!如果是5.0以后,就可以直接调用setBackgroundImage函数来设置背景图片。
反之。5.0之前,我们该怎么做。
我们先创建一个Category类目,扩展类我们选择UINavigationBar。
在.m文件里面去覆盖
-(void) drawRect:(CGRect)rect{
UIImage *image=[UIImage imageNamed:@""];
[image drawInRect:rect];
}
当初始化这个UINavigationBar时候,会调用drawRect方法,去绘制导航栏
我们这里覆盖了drawRect函数,里面画了一张图片,其中rect参数的大小就是320/44
所以就完成了对导航栏的背景设置。