更改iOS 8中UIBarButtonItems之间的间距 [英] Change Spacing Between UIBarButtonItems in iOS 8
问题描述
我的视图控制器上有 UINavigationItem
,我正在尝试减少两个 RightBarButtonItems之间的间距
。以下是我的一些代码:
//创建两个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
//在导航栏上添加rightBarButtonItems
viewController.navigationItem.rightBarButtonItems = [item2,fixedSpace,item1]
可以看出,我使用的是FixedSpace UIBarButtonItem
,但这并没有改变间距因为某些原因。我已经考虑过继承 UINavigationItem
或 UIBarButtonItem
,以便我可以相应地设置间距,但我无法'似乎找到了我可以覆盖的任何方法来改变项目之间的间距。
非常感谢任何有关如何解决这个问题的见解!
感谢@ Fogmeister的帮助,我发现 view1的宽度
和 view2
对象, UIButtons
,太大了。这就是为什么它们之间存在异常间距的原因。这是我的最终代码:
//获取第一个按钮的图像
var view1Img:UIImage = UIImage(名称: 图像1)!
//创建第一个按钮
var view1:UIButton = UIButton(frame:CGRect(x:0,y:0,width:view1Img.size.width,height:view1Img.size) .height))
//获取第二个按钮的图像
var view2Img:UIImage = UIImage(命名为:Image2)!
//创建第二个按钮
var view2:UIButton = UIButton(frame:CGRect(x:0,y:0,width:view2Img.size.width,height:view2Img.size) .height))
//创建两个UIBarButtonItems
let item1:UIBarButtonItem = UIBarButtonItem(customView:view1)
let item2:UIBarButtonItem = UIBarButtonItem(customView:view2)
//在两个UIBarButtonItems之间设置26px的固定空间
var fixedSpace:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem:UIBarButtonSystemItem.FixedSpace,target:nil,action:nil)
fixedSpace.width = 26.0
//在两个UIBarButtonItems之前设置固定空间的-7px,使它们与边缘对齐
var negativeSpace:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem:UIBarButtonSystemItem.FixedSpace,target:nil,action :nil)
negativeSpace.width = -7.0
//在导航栏
viewController.navigationItem上添加rightBarButtonItems。 rightBarButtonItems = [negativeSpace,item2,fixedSpace,item1]
我为第一个<$创建背景图片c $ c> UIButton 然后使用其大小为 UIButton
创建框架。我对第二个 UIButton
执行相同的操作。然后,我从两个 UIButtons
创建 UIBarButtonItems
。之后,我创建26px的固定空间,然后创建-7.0px的固定空间。前者的目的是在两个按钮之间创建一定量的空间。后者的目的是将所有 UIBarButtonItems
移到右侧。然后,我按照特定的顺序将所有 UIBarButtonItems
添加为 rightBarButtonItems
,以便得到我想要的外观。 / p>
现在效果很好!感谢所有的帮助,Fogmeister!
I have a UINavigationItem
on my view controller, and I am trying to reduce the spacing between my two RightBarButtonItems
. Here is some of my code:
// 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]
As can be seen, I am using a FixedSpace UIBarButtonItem
, but this is not changing the spacing for some reason. I have thought about subclassing either the UINavigationItem
or the UIBarButtonItem
so that I can set the spacing accordingly, but I couldn't seem to find any methods that I could override to change the spacing between items.
Any insight on how to solve this problem would be greatly appreciated!
Thanks to @Fogmeister's help, I figured out that the width of the view1
and view2
objects, which are UIButtons
, was too large. That was why there was abnormal spacing between them. Here is my final code:
// 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]
I create the background image for the first UIButton
and then use its size to create the frame for that UIButton
. I perform the same actions for the second UIButton
. Then, I create UIBarButtonItems
from the two UIButtons
. After that, I create 26px of fixed space and then -7.0px of fixed space. The purpose of the former is to create a certain amount of space between the two buttons. The purpose of the latter is to move all UIBarButtonItems
over to the right. Then, I add all of the UIBarButtonItems
as rightBarButtonItems
in a particular order so I get the look that I want.
It works great now! Thanks for all of the help, Fogmeister!
这篇关于更改iOS 8中UIBarButtonItems之间的间距的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!