根據(jù)iOS系統(tǒng)方法創(chuàng)建的UIBarButtonItem間距在一般看來是比較大的, 如果想要調(diào)整, 可以嘗試以下一種方法:
首先創(chuàng)建兩個(gè)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];
運(yùn)行結(jié)果如下:
- 使用UIBarButtonSystemItemFixedSpace
網(wǎng)上有的說創(chuàng)建一個(gè)type為UIBarButtonSystemItemFixedSpace的UIBarButtonItem進(jìn)行占位, 并將其設(shè)置為負(fù)值,以期實(shí)現(xiàn)減小間距的效果.
親測代碼如下:
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];
可以看到購物車距離右邊框的距離縮小了.
但是當(dāng)我視圖再在item1 和 item2 之間加一個(gè)space2 時(shí), 如果當(dāng)width值為正數(shù)時(shí), 間距會(huì)增加, 當(dāng)width的值為負(fù)值, 間距并沒有變小. 所以總結(jié), 此法只有在調(diào)整UIBarButtonItem 到左右邊距時(shí)有效.
2.自定義Button
由于使用系統(tǒng)默認(rèn)的方法創(chuàng)建的UIBarButtonItem 的大小并不是由我們決定的, 所以我們可以通過自己創(chuàng)建一個(gè)自定義大小的button的方式來創(chuàng)建一個(gè)UIBarButtonItem, 以達(dá)到縮小間隔的目的.代碼如下:
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];
可以看到間距確實(shí)減小了:
3.設(shè)置UIEdgeInsets
如果是通過圖片創(chuàng)建的UIBarButtonItem, 我們可以通過設(shè)置imageInsets屬性來調(diào)整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];
//設(shè)置圖片與按鈕間距
[item2 setImageInsets:UIEdgeInsetsMake(0, 15, 0, -15)];
self.navigationItem.rightBarButtonItems = @[item1,item2];
總結(jié): 如果是用圖片創(chuàng)建的UIBarButtonItem , 第三種方式較為簡單; 如果是通過圖片以外的方式創(chuàng)建可以通過第二種方式實(shí)現(xiàn); 如果只是想調(diào)整按鈕到兩邊的距離, 用第一種方式即可.