iOS:带button图像的导航栏

我想创build一个NavigationBar的导航条右侧的图像作为button。

像下面的快照

在这里输入图像说明

我怎样才能做到这一点?

希望这可以帮助

viewController.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage.png"]]; UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage2.jpg"]]]; viewController.navigationItem.rightBarButtonItem = item; 

这里的代码,只需调用下面的方法从viewDidLoad方法

  - (void)addCustomButtonOnNavBar { UIBarButtonItem * item1= [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"passImageNmae1"] style:UIBarButtonItemStylePlain target:self action:@selector(yourButtonAction1)]; UIBarButtonItem * item2= [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"passImageNmae2"] style:UIBarButtonItemStylePlain target:self action:@selector(yourButtonAction2)]; NSArray * buttonArray =[NSArray arrayWithObjects:item1,item2 ,nil]; self.navigationItem.rightBarButtonItems =buttonArray; } 
 UIView *viewWithButtons = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 44)]; //view customization UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; //Button customiztaion [viewWithButtons addSubview:leftButton]; UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeCustom]; //Button customiztaion [viewWithButtons addSubview:rightButton]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:viewWithButtons]; [viewWithButtons release]; 

我为此使用了一个类别:

的UIBarButtonItem + WithImageOnly.h:

 #import <UIKit/UIKit.h> @interface UIBarButtonItem (WithImageOnly) - (id)initWithImageOnly:(UIImage*)image target:(id)target action:(SEL)action; @end 

的UIBarButtonItem + WithImageOnly.m:

 #import "UIBarButtonItem+WithImageOnly.h" @implementation UIBarButtonItem (WithImageOnly) - (id)initWithImageOnly:(UIImage *)image target:(id)target action:(SEL)action { CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height); frame = CGRectInset(frame, -5, 0); UIButton *button = [[UIButton alloc] initWithFrame:frame]; [button setImage:image forState:UIControlStateNormal]; [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; return [self initWithCustomView:button]; } @end 

用法:

 UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImageOnly:[UIImage imageNamed:@"image"] target:self action:@selector(someAction:)]