如何为UINavigationBar设置背景图片
2009-11-04 16:57
423 查看
///////////////////////////////////////////////////////////////// 2012.9.6更新 (iOS 4 & iOS 5 均适用)
针对局部NavigationBar进行背景更改的方法:
以下是全局更改NavigationBar背景的方法:
///////////////////////////////////////////////////////////////// 2012.2.24更新 (iOS 4 & iOS 5 均适用)
///////////////////////////////////////////////////////////////// iOS 5之前的解决方法,在iOS 5中已经不再适用
在iPhone开发中, 有时候我们想给导航条添加背景图片, 实现多样化的导航条效果, 用其他方法往往无法达到理想的效果, 经过网上搜索及多次实验, 确定如下最佳实现方案:
为UINavigatonBar增加如下Category:
例如, 在我的项目中, 添加如下代码:
实现的效果如下图:
针对局部NavigationBar进行背景更改的方法:
float version = [[[UIDevice currentDevice] systemVersion] floatValue]; UIImage *backgroundImage = [UIImage imageNamed:@"myBackgroundImage.png"]; if (version >= 5.0) { [self.navigationController.navigationBar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault]; } else { [self.navigationController.navigationBar insertSubview:[[[UIImageView alloc] initWithImage:backgroundImage] autorelease] atIndex:1]; }
以下是全局更改NavigationBar背景的方法:
///////////////////////////////////////////////////////////////// 2012.2.24更新 (iOS 4 & iOS 5 均适用)
- (UIImage *)barBackground { return [UIImage imageNamed:@"topNavigationBar.png"]; } - (void)didMoveToSuperview { //iOS5 only if ([self respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { [self setBackgroundImage:[self barBackground] forBarMetrics:UIBarMetricsDefault]; } } //this doesn't work on iOS5 but is needed for iOS4 and earlier - (void)drawRect:(CGRect)rect { //draw image [[self barBackground] drawInRect:rect]; } @end
更详细的解决方法请参考:
http://stackoverflow.com/questions/7657465/uinavigationbars-drawrect-is-not-called-in-ios-5-0
///////////////////////////////////////////////////////////////// iOS 5之前的解决方法,在iOS 5中已经不再适用
在iPhone开发中, 有时候我们想给导航条添加背景图片, 实现多样化的导航条效果, 用其他方法往往无法达到理想的效果, 经过网上搜索及多次实验, 确定如下最佳实现方案:
为UINavigatonBar增加如下Category:
@implementation UINavigationBar (CustomImage) - (void)drawRect:(CGRect)rect { UIImage *image = [UIImage imageNamed: @"NavigationBar.png"]; [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; } @end
例如, 在我的项目中, 添加如下代码:
///////////////////////////////////////////////////////// /* input: The image and a tag to later identify the view */ @implementation UINavigationBar (CustomImage) - (void)drawRect:(CGRect)rect { UIImage *image = [UIImage imageNamed: @"title_bg.png"]; [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; } @end ///////////////////////////////////////////////////////// @implementation FriendsPageViewController // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { self.navigationBar.tintColor = [UIColor purpleColor]; [self initWithRootViewController:[[RegPageViewController alloc] init]]; [super viewDidLoad]; } ......
实现的效果如下图:
相关文章推荐
- 如何为UINavigationBar设置背景图片
- 如何为UINavigationBar设置背景图片
- JFrame如何设置背景图片
- iOS设置UINavigationBar的背景颜色或背景图片
- 如何设置 cmder 的背景图片
- qt4:如何设置(button,lable,textedit,lineedit,progressbar等的)背景图片
- Android开发_如何设置按钮背景透明与半透明_图片背景透明
- Android开发_如何设置按钮背景透明与半透明_图片背景透明
- QT小知识点(5) -QT中如何设置窗体的背景图片
- JAVA如何在为窗口设置背景图片
- MFC如何设置背景图片
- HTML5 body设置全屏背景图片 如何让body的背景图片自适应整个屏----实战经验
- C# 如何给Word文档设置背景颜色和背景图片
- Qt 如何 给Widget设置背景图片
- 如何设置Win8不同版本的背景图片
- 如何设置C# treeview Web控件背景图片
- 【转】在网页中如何设置背景图片
- JAVA如何在为窗口设置背景图片(1.JFrame)
- JFrame如何设置背景图片
- UINavigationBar设置背景图片