Reputation: 5742
I am trying 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];
Upvotes: 8
Views: 13452
Reputation: 15694
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.
Upvotes: 3
Reputation: 4461
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.
Upvotes: 19
Reputation: 9090
Im not in XCode at the moment, so I cannot post code. The procedure goes like this
If it doesn't match 100%, consider adding the bounds of the button to the image dimensions before setting the button's frame
Upvotes: -1