更改iOS 8中UIBarButtonItems之间的间距 [英] Change Spacing Between UIBarButtonItems in iOS 8

查看:1890
本文介绍了更改iOS 8中UIBarButtonItems之间的间距的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的视图控制器上有 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆