2

This is how it looks now:

enter image description here

This is how it is represented in Debug view Hierarchy:

enter image description here

And here is how I set it up in code:

func setupUserAndCartButtons() {

    var rightBarButtonItems = [UIBarButtonItem]()

    let cartBarButtonItem = UIBarButtonItem(image: DBCart.sharedCart().icon, style: .Plain, target: self, action: Selector("cartButtonTapped:"))

    rightBarButtonItems.append(cartBarButtonItem)

    let userIcon = UIImage(named: "icon-user")
    let userBarButtonItem = UIBarButtonItem(image: userIcon, style: .Plain, target: self, action: Selector("userButtonTapped:"))
    rightBarButtonItems.append(userBarButtonItem)

    navigationItem.rightBarButtonItems = rightBarButtonItems
}

Hot to move them closer to each other without using custom view?

Bartłomiej Semańczyk
  • 59,234
  • 49
  • 233
  • 358
  • May be the width of the images you using is way too high for the UIBarButtonItem. You can also use the view instead and place your buttons as you wish. You may have some idea if you visit http://stackoverflow.com/questions/26614562/change-spacing-between-uibarbuttonitems-in-ios-8 – Boopathy Aug 04 '15 at 08:03

4 Answers4

2

use imageInsets property of UIBarButtonItem

In Objective-C [addContact setImageInsets:UIEdgeInsetsMake(0, -10,0, 0)];

Mukesh
  • 3,680
  • 1
  • 15
  • 32
1

Swift 4.1

 buttonName.imageInsets = UIEdgeInsetsMake(0, 30, 0, 0)

This will move button to right side to other button. Hope this will help someone

Dilip Tiwari
  • 1,441
  • 18
  • 31
0

Add buttons using custom View:

  //MARK:Customize Navigation Bar
  func addButtonsToNavigationBar(){
    let cartButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton

    cartButton.frame = CGRectMake(0,0,20,20)
    cartButton.addTarget(self, action: "cartButtonTapped:", forControlEvents: .TouchUpInside)
    cartButton.setImage(UIImage(named: DBCart.sharedCart().icon), forState: .Normal)

    let cartBarButtonItem = UIBarButtonItem(customView: cartButton)

    let userButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
    userButton.frame = CGRectMake(0,0,20,20)
    userButton.addTarget(self, action: "userButtonTapped:", forControlEvents: .TouchUpInside)
    userButton.setImage(UIImage(named: "icon-user"), forState: .Normal)

    let userBarButtonItem = UIBarButtonItem(customView: userButton)

    self.navigationItem.rightBarButtonItems=[cartBarButtonItem,userBarButtonItem]
  }
Hamza Ansari
  • 3,009
  • 1
  • 23
  • 25
  • Could you please help me http://stackoverflow.com/questions/43337217/add-space-to-image-leftbarbuttonitem-with-swift-3 ? – May Phyu Apr 11 '17 at 05:14
0

UIBarButtonSystemItemFixedSpace is used to adjust spacings of navigation bar items.

Example code:

- (void)setRightBarButtonItems {

    UIBarButtonItem *addTaskButton =
    [[UIBarButtonItem alloc] bk_initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                    handler:handler];

    UIBarButtonItem *negativeSeperator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];

    if ([UIDevice isIOS7Plus]) {
        negativeSeperator.width = -12;
    } else {
        negativeSeperator.width = -8;
    }
    UIBarButtonItem *separator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    separator.width = 50;

    [self.navigationItem setRightBarButtonItems:@[addTaskButton, separator, [self filterButton]]];
}
Adem Özgür
  • 200
  • 1
  • 10