根据iOS系统方法创建的UIBarButtonItem间距在一般看来是比较大的, 如果想要调整, 可以尝试以下一种方法:
首先创建两个UIBarButtonItem
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"gouwuche.png"] style:UIBarButtonItemStylePlain target:nil action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"search.png"] style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.rightBarButtonItems = @[item1,item2];
运行结果如下:
- 使用UIBarButtonSystemItemFixedSpace
网上有的说创建一个type为UIBarButtonSystemItemFixedSpace的UIBarButtonItem进行占位, 并将其设置为负值,以期实现减小间距的效果.
亲测代码如下:
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"gouwuche.png"] style:UIBarButtonItemStylePlain target:nil action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"search.png"] style:UIBarButtonItemStylePlain target:nil action:nil];
//新加的代码
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
space.width = -10;
self.navigationItem.rightBarButtonItems = @[space,item1,item2];
可以看到购物车距离右边框的距离缩小了.
但是当我视图再在item1 和 item2 之间加一个space2 时, 如果当width值为正数时, 间距会增加, 当width的值为负值, 间距并没有变小. 所以总结, 此法只有在调整UIBarButtonItem 到左右边距时有效.
2.自定义Button
由于使用系统默认的方法创建的UIBarButtonItem 的大小并不是由我们决定的, 所以我们可以通过自己创建一个自定义大小的button的方式来创建一个UIBarButtonItem, 以达到缩小间隔的目的.代码如下:
UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
[btn1 setImage:[UIImage imageNamed:@"gouwuche.png"] forState:UIControlStateNormal];
[btn1 setFrame:CGRectMake(0, 0, 30, 30)];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc]initWithCustomView:btn1];
UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeCustom];
[btn2 setImage:[UIImage imageNamed:@"search.png"] forState:UIControlStateNormal];
[btn2 setFrame:CGRectMake(0, 0, 30, 30)];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc]initWithCustomView:btn2];
self.navigationItem.rightBarButtonItems = @[item1,item2];
可以看到间距确实减小了:
3.设置UIEdgeInsets
如果是通过图片创建的UIBarButtonItem, 我们可以通过设置imageInsets属性来调整image到按钮的距离, 来缩小间距:
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed: @"gouwuche.png"]
style:UIBarButtonItemStylePlain
target:nil
action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"search.png"]
style:UIBarButtonItemStylePlain target:nil action:nil];
//设置图片与按钮间距
[item2 setImageInsets:UIEdgeInsetsMake(0, 15, 0, -15)];
self.navigationItem.rightBarButtonItems = @[item1,item2];
总结: 如果是用图片创建的UIBarButtonItem , 第三种方式较为简单; 如果是通过图片以外的方式创建可以通过第二种方式实现; 如果只是想调整按钮到两边的距离, 用第一种方式即可.