Bob*_*Bob 32 iphone xcode spacing rightbarbuttonitem ios7
我使用以下代码将两个按钮添加到self.navigationItem.rightBarButtonItems,我认为在iOS7中,两个按钮之间的空间太宽,有没有办法减少这两个按钮之间的空间?
UIBarButtonItem *saveStyleButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"save.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(saveStyle)];
UIBarButtonItem *shareStyleButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(shareStyle)];
NSArray *arr= [[NSArray alloc] initWithObjects:shareStyleButton,saveStyleButton,nil];
self.navigationItem.rightBarButtonItems=arr;
Run Code Online (Sandbox Code Playgroud)
欣赏任何提示或想法.
Bob*_*Bob 48
2015年7月更新
更好的方法是使用storyboard(在Xcode 6.4中测试).首先,添加一个UINavigationItem; 其次,添加一个条形按钮项; 第三,将视图添加到刚刚在步骤2中创建的条形按钮项; 第四,在你刚刚拖入的视图中添加任意数量的按钮; 最后,用鼠标和约束调整空间.
相关问题
在iOS 5中使用Storyboard时,无法为UINavigationItem分配多个按钮
旧答案(仅适用于小插图)
使用imageInsets属性:
leftButton.imageInsets = UIEdgeInsetsMake(0.0, 0.0, 0, -15);
rightButton.imageInsets = UIEdgeInsetsMake(0.0, -15, 0, 0);
Run Code Online (Sandbox Code Playgroud)
对于三个或更多按钮,中间的按钮得到两个插图:
leftButton.imageInsets = UIEdgeInsetsMake(0.0, 0.0, 0, -15);
middleButton.imageInsets = UIEdgeInsetsMake(0.0, -15, 0, -15);
rightButton.imageInsets = UIEdgeInsetsMake(0.0, -15, 0, 0);
Run Code Online (Sandbox Code Playgroud)
对于右侧按钮,请注意:项目数组中的FIRST按钮是正确的:
rightButton.imageInsets = UIEdgeInsetsMake(0.0, -15, 0, 0);
middleButton.imageInsets = UIEdgeInsetsMake(0.0, -15, 0, -15);
leftButton.imageInsets = UIEdgeInsetsMake(0.0, 0.0, 0, -15);
Run Code Online (Sandbox Code Playgroud)
重要提示:拆分两个邻居之间的插图; 如果将整个插图应用于一个边缘,很明显按钮在"空白"空间中重叠 - 一个按钮获得所有"间隙"触摸.即使将这样的调整"分开",两边都是-40,水龙头肯定会出现错误按钮.-15或-20是使用此技术时最常考虑的.
通过应用此方法,按钮甚至可以在四个方向上移动.
小智 14
我的解决方案是为右栏按钮使用自定义视图。创建等间距的水平stackview并添加任意数量的按钮作为子视图。
样例代码:
func addRightBarButtonItems()
{
let btnSearch = UIButton.init(type: .custom)
btnSearch.setImage(UIImage(named: "icon-search"), for: .normal)
btnSearch.addTarget(self, action: #selector(MyPageContainerViewController.searchButtonPressed), for: .touchUpInside)
let btnEdit = UIButton.init(type: .custom)
btnEdit.setImage(UIImage(named: "icon-edit"), for: .normal)
btnEdit.addTarget(self, action: #selector(MyPageContainerViewController.editButtonPressed), for: .touchUpInside)
let stackview = UIStackView.init(arrangedSubviews: [btnEdit, btnSearch])
stackview.distribution = .equalSpacing
stackview.axis = .horizontal
stackview.alignment = .center
stackview.spacing = 8
let rightBarButton = UIBarButtonItem(customView: stackview)
self.navigationItem.rightBarButtonItem = rightBarButton
}
Run Code Online (Sandbox Code Playgroud)
Ely*_*Ely 11
只需一行代码即可减少导航栏中按钮之间的空间:
UIStackView.appearance(whenContainedInInstancesOf: [UINavigationBar.self]).spacing = -10
Run Code Online (Sandbox Code Playgroud)
在将按钮添加到导航栏之前,必须将此行放入代码中。
小智 9
在您的 AppDelegate 中添加以下代码:
let stackViewAppearance = UIStackView.appearance(whenContainedInInstancesOf: [UINavigationBar.self])
stackViewAppearance.spacing = -10
Run Code Online (Sandbox Code Playgroud)
如果您希望在右上角或右侧有两个按钮,它们之间没有空间,那么这对我有用。
let imgLeft = UIImage(named: "buttonLeft")?.imageWithRenderingMode(.AlwaysOriginal)
let bLeft = UIBarButtonItem(image: imgLeft, style: UIBarButtonItemStyle.Done, target: self, action: "action1:")
let space = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil)
space.width = -16.0
bLeft.imageInsets = UIEdgeInsetsMake(0, 0, 0, -25.0)
let imgRight = UIImage(named: "buttonRight")?.imageWithRenderingMode(.AlwaysOriginal)
let bRight = UIBarButtonItem(image: imgRight, style: UIBarButtonItemStyle.Done, target: self, action: "action2:")
bRight.imageInsets = UIEdgeInsetsMake(0, -25, 0, 0)
self.navigationItem.rightBarButtonItems = [space,bLeft,bRight ]
Run Code Online (Sandbox Code Playgroud)
第一:
因为UIBarButtonItem你必须使用构造函数init(customView: UIView)
第二:
使用fixedSpace了按键之间设置空间
例:
let firstButton = UIButton()
let firstButtonItem = UIBarButtonItem(customView: firstButton)
let secondButton = UIButton()
let secondButtonItem = UIBarButtonItem(customView: secondButton)
let space = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
space.width = WIDTH
self.navigationItem.rightBarButtonItems = [firstButtonItem, space, secondButtonItem]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31815 次 |
| 最近记录: |