修改两个右 UIBarButtonItems 之间的间距

Posted

技术标签:

【中文标题】修改两个右 UIBarButtonItems 之间的间距【英文标题】:Modifying spacing between two right UIBarButtonItems 【发布时间】:2015-02-05 01:37:43 【问题描述】:

我想在导航栏的右侧放置两个 UIBarButtonItem。我面临的主要问题是按钮之间的间距(由于post,最右边的按钮和导航视图边框之间的间距已经解决)。这是我正在使用的代码

// add buttons
        let buttonEdit: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
        buttonEdit.frame = CGRectMake(0, 0, 40, 40)
        buttonEdit.setImage(UIImage(named:"iconMap"), forState: UIControlState.Normal)
        buttonEdit.addTarget(self, action: "rightNavItemEditClick:", forControlEvents: UIControlEvents.TouchUpInside)
        var rightBarButtonItemEdit: UIBarButtonItem = UIBarButtonItem(customView: buttonEdit)


        let buttonDelete: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
        buttonDelete.frame = CGRectMake(0, 0, 40, 40)
        buttonDelete.setImage(UIImage(named:"iconMap"), forState: UIControlState.Normal)
        buttonDelete.addTarget(self, action: "rightNavItemDeleteClick:", forControlEvents: UIControlEvents.TouchUpInside)

        var rightBarButtonItemDelete: UIBarButtonItem = UIBarButtonItem(customView: buttonDelete)


        let spaceFix: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil)
        spaceFix.width = -10 
 // add multiple right bar button items
 self.navigationItem.setRightBarButtonItems([spaceFix,rightBarButtonItemDelete,rightBarButtonItemEdit], animated: true)

如果我尝试在两个按钮之间放置一个额外的垫片(如 here 所示),则没有明显效果。我需要让按钮更近一点,我该怎么做?

【问题讨论】:

【参考方案1】:

您无法真正控制 UIBarButtonItem 之间的间距。您可以更改 UIBarButtonItem 的width,但仅此而已。 UIButtonItem 不是 UIView;它没有框架,所以你不能说它的位置。如果您想更好地控制界面的外观,则必须使用 UIBarButtonItem,它本身由自定义视图 (init(customView:)) 组成。现在您在 UIView 世界中,您可以设置其子视图的框架,可以是真正的按钮或其他任何东西。

【讨论】:

以上是关于修改两个右 UIBarButtonItems 之间的间距的主要内容,如果未能解决你的问题,请参考以下文章

UIBarButtonItems 选择的颜色在 iOS 7 中不会正确更改

从多个视图向 UINavigationBar 添加和删除 UIBarButtonItems

UIToolbar UIBarButtonItem 对齐问题

更改导航右键的背景?

UIBarButtonItems 未显示在 UIToolbar 上

在 iPad 上的 inputAssistantItem 中为 UIBarButtonItems 着色