【问题标题】:How to change space between UIBarButtonItems in UINavigationBar?如何更改 UINavigationBar 中 UIBarButtonItems 之间的空间?
【发布时间】:2015-08-04 07:34:55
【问题描述】:

这就是现在的样子:

这是它在调试视图层次结构中的表示方式:

这是我在代码中的设置方式:

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
}

在不使用自定义视图的情况下将它们彼此靠近?

【问题讨论】:

  • 可能是您使用的图像的宽度对于 UIBarButtonItem 来说太高了。您也可以改用视图并根据需要放置按钮。如果您访问stackoverflow.com/questions/26614562/…,您可能会有一些想法

标签: ios swift uinavigationbar


【解决方案1】:

使用 UIBarButtonItem 的 imageInsets 属性

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

【讨论】:

    【解决方案2】:

    斯威夫特 4.1

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

    这会将按钮向右移动到另一个按钮。 希望这会对某人有所帮助

    【讨论】:

      【解决方案3】:

      使用自定义视图添加按钮:

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

      【讨论】:

      【解决方案4】:

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多