在iOS 8中更改UIBarButtonItems之间的间距
我有一个UINavigationItem
在我的视图控制器 ,我试图减less我的两个RightBarButtonItems
之间的间距。 这是我的一些代码:
// Create two UIBarButtonItems let item1:UIBarButtonItem = UIBarButtonItem(customView: view1) let item2:UIBarButtonItem = UIBarButtonItem(customView: view2) var fixedSpace:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) fixedSpace.width = -20.0 // Add the rightBarButtonItems on the navigation bar viewController.navigationItem.rightBarButtonItems = [item2, fixedSpace, item1]
可以看出,我正在使用FixedSpace UIBarButtonItem
,但由于某些原因,这不会改变间距。 我曾经想过子类UINavigationItem
或UIBarButtonItem
以便我可以相应地设置间距,但我似乎无法find任何方法,我可以重写以更改项目之间的间距。
任何有关如何解决这个问题的见解将不胜感激!
感谢@ Fogmeister的帮助,我发现view1
和view2
对象的宽度是UIButtons
,太大了。 这就是为什么他们之间有不正常的间距。 这是我最后的代码:
// Get the first button's image var view1Img:UIImage = UIImage(named: "Image1")! // Create the first button var view1:UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: view1Img.size.width, height: view1Img.size.height)) // Get the second button's image var view2Img:UIImage = UIImage(named: "Image2")! // Create the second button var view2:UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: view2Img.size.width, height: view2Img.size.height)) // Create two UIBarButtonItems let item1:UIBarButtonItem = UIBarButtonItem(customView: view1) let item2:UIBarButtonItem = UIBarButtonItem(customView: view2) // Set 26px of fixed space between the two UIBarButtonItems var fixedSpace:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) fixedSpace.width = 26.0 // Set -7px of fixed space before the two UIBarButtonItems so that they are aligned to the edge var negativeSpace:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) negativeSpace.width = -7.0 // Add the rightBarButtonItems on the navigation bar viewController.navigationItem.rightBarButtonItems = [negativeSpace, item2, fixedSpace, item1]
我创build第一个UIButton
的背景图像,然后使用它的大小为该UIButton
创build框架。 我为第二个UIButton
执行相同的操作。 然后,我从两个UIButtons
创buildUIBarButtonItems
。 之后,我创build了26px的固定空间,然后是-7.0px的固定空间。 前者的目的是在两个button之间创build一定的空间。 后者的目的是将所有的UIBarButtonItems
移到右边。 然后,我将所有的UIBarButtonItems
作为rightBarButtonItems
以特定的顺序添加,这样我就能看到我想要的样子。
它现在很好用! 感谢所有的帮助,Fogmeister!
另一种方法是通过更改IB中的左图像和右图像插入。
从UIBarButtonItem的文档…
如果值为0.0或负值 ,则该项目将设置组合图像和标题的宽度以适合。
如果将宽度设置为-20.0
,则会忽略它并使用标准宽度。
无论如何,你试图用负的宽度来达到什么目的? 我几乎肯定会有更好的方法。