下面是定义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];
效果图:
![iphone--自定义UINavgationBar iphone--自定义UINavgationBar](http://www.devdiv.com/data/attachment/album/201103/08/222110kh8rh36wp6kwts6f.png)