如何更改UINavigationBar中的UIBarButtonItems之间的空间?

这是现在的样子:

在这里输入图像说明

这是如何在debugging视图层次结构中表示的:

在这里输入图像说明

以下是我如何在代码中设置它:

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 } 

如果不使用自定义视图,可以将它们彼此靠得更近?

使用imageInsets属性

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

使用自定义视图添加button:

  //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] } 

UIBarButtonSystemItemFixedSpace用于调整导航栏项目的间距。

示例代码:

 - (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]]]; }