How to set the image on rightBarButtonItem of UINavigationBar?
I am 开发者_如何学Ctrying to set the image on rightBarButtonItem and its fine but the only thing wrong is the background behind this image which has more width than my image. Anybody has any idea how to fix this. Code:
[self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"action_btn.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(actionButtonClicked:)] animated:YES];
Here you can set the image on rightBarButtonItem of NavigationBar as follows:
UIButton *button1 = [[UIButton alloc] init];
button1.frame=CGRectMake(0,0,105,30);
[button1 setBackgroundImage:[UIImage imageNamed: @"image1.png"] forState:UIControlStateNormal];
[button1 addTarget:appDelegate action:@selector(Open_Link1) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:button1];
[button1 release];
Please let me know if you have any more questions.
In Swift:
let infoImage = UIImage(named: "my-icon")
let imgWidth = infoImage?.size.width
let imgHeight = infoImage?.size.height
let button:UIButton = UIButton(frame: CGRect(x: 0,y: 0,width: imgWidth!, height: imgHeight!))
button.setBackgroundImage(infoImage, forState: .Normal)
button.addTarget(self, action: Selector("openInfo"), forControlEvents: UIControlEvents.TouchUpInside)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)
P.S. UIBarButtonItem(image:style:target:action:)
constructor only works for transparent PNG, also I had to set button tintcolor other than clearColor.
Im not in XCode at the moment, so I cannot post code. The procedure goes like this
- Create the UIBarButtonItem with default initializer
- Create the UIImage
- Get the CGRect from the image dimensions,
- Set the UIBarButtonItem.frame to that dimensions
If it doesn't match 100%, consider adding the bounds of the button to the image dimensions before setting the button's frame
精彩评论