下面是定義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];
如下: