如何更改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]]]; }