下面是定义UINavgationBar的static函数
+ (UINavigationBar *)createNavigationBarWithBackgroundImage:(UIImage *)backgroundImage title:(NSString *)title { UINavigationBar *customNavigationBar = [[[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)] autorelease]; UIImageView *navigationBarBackgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage]; [customNavigationBar addSubview:navigationBarBackgroundImageView]; UINavigationItem *navigationTitle = [[UINavigationItem alloc] initWithTitle:title]; [customNavigationBar pushNavigationItem:navigationTitle animated:NO]; [navigationTitle release]; [navigationBarBackgroundImageView release]; return customNavigationBar; }
下面是在需要生成UINavgationBar 的地方添加的代码 *ViewController.m:
self.navigationController.navigationBar.hidden = YES; UIImage *navigationBarBackgroundImage =[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"topbar-bg" ofType:@"png"]]; UINavigationBar *customNavigationBar = [YOUR_Util_Class createNavigationBarWithBackgroundImage:navigationBarBackgroundImage title:nil]; [self.view addSubview:customNavigationBar]; UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 75.0, 30.0)]; if (_backButtonImage) { [backButton setImage:_backButtonImage forState:UIControlStateNormal]; }else { [backButton setImage:[UIImage imageNamed:@"btnback.png"] forState:UIControlStateNormal]; } [backButton addTarget:self action:@selector(backButtonCliked:) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButton]; customNavigationBar.topItem.leftBarButtonItem = backBarButton; [backButton release]; [backBarButton release]; UIButton *addButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 43, 30)]; UIBarButtonItem *addBarButton = [[UIBarButtonItem alloc] initWithCustomView:addButton]; if (_isFromFavorites) { [addButton setImage:[UIImage imageNamed:@"btn-delete-0.png"] forState:UIControlStateNormal]; [addButton addTarget:self action:@selector(deleteButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; }else { [addButton setImage:[UIImage imageNamed:@"btn_add.png"] forState:UIControlStateNormal]; [addButton addTarget:self action:@selector(addButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; } customNavigationBar.topItem.rightBarButtonItem = addBarButton; [addButton release]; [addBarButton release];
效果图如下: