2012-03-26 70 views
19

這裏是快照: enter image description here我可以更改導航欄項目的位置嗎?

和代碼是在這裏:

UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
leftButton.frame = CGRectMake(0.0f, 0.0f, 46.0f, 32.0f); 
[leftButton setBackgroundImage:[UIImage imageNamed:@"navi_register_up.png"] forState:UIControlStateNormal]; 
[leftButton addTarget:self action:@selector(doRegister) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *leftBarItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton]; 
self.navigationItem.leftBarButtonItem = leftBarItem; 
[leftBarItem release]; 

有沒有辦法動按鈕一些PX? 謝謝:)

回答

4

在要分開的項目之間添加一個UIBarButtonSystemItemFlexibleSpace項目。

+0

UIBarButtonSystemItemFlexibleSpace可以在水平分離項目。但我想要移動按鈕。 UIBarButtonSystemItemFlexibleSpace可以幫助嗎? – 2012-03-26 03:15:47

+0

不是垂直的,沒有。您可以隨時使用UIToolbar並添加一個UILabel以及您需要的框架來垂直放置它,然後添加相應的按鈕。 – WrightsCS 2012-03-26 04:08:26

0

標準欄按鈕的高度爲29pt。幫你一個忙,然後縮小leftbutton的高度和navi_register_up.png的高度。

11

你可以試試這個,

leftButton.imageEdgeInsets = UIEdgeInsetsMake(-2, 0, 0, 0); 
+0

它不起作用... – 2012-03-26 03:33:36

+0

@理想評論學派,我已經測試過了,它可以移動UIButton的圖像:) – looyao 2012-03-26 03:54:58

+0

你用我的代碼測試了嗎?只需添加「leftButton.imageEdgeInsets = UIEdgeInsetsMake(-2,0,0,0);」 ?我會再次檢查它 – 2012-03-26 04:22:38

67

你需要創建一個系統項目UIBarButtonSystemItemFixedSpace與-5寬度將刪除5 px填充一個UIBarButtonItem。然後設置leftBarButtonItems與兩個固定的空間項目,你的背部欄項目這樣的 -

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; 
[negativeSpacer setWidth:-5]; 

self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer,leftBarItem,nil]; 
+7

如果你需要水平移動UIBarButtonItem,效果很好 – florian 2013-04-19 09:28:35

+0

你是一個明星人+1我來自 – Nilesh 2013-08-16 11:09:51

+3

嗯,這個工程,但似乎只適用於一個按鈕。間隔和按鈕似乎不工作想法 – d2burke 2013-12-12 15:27:12

0

您可以使用此代碼,我認爲這將是對您有所幫助。 UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0,0,50,32); [按鈕setBackgroundImage:[UIImage imageNamed:@「btn_back.png」] forState:UIControlStateNormal];

[button addTarget:self action:@selector(BackBtnClicked) forControlEvents:UIControlEventTouchUpInside]; 
UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 32)]; 
backButtonView.bounds = CGRectOffset(backButtonView.bounds, -1, -4); 
[backButtonView addSubview:button]; 

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButtonView]; 
//barButtonItem.imageInsets = UIEdgeInsetsMake(-6, 20, 30, 0); 

[self.navigationItem setLeftBarButtonItem:barButtonItem]; 
0

我有類似的問題,並發現在故事板中有足夠的選項。只需點擊導航欄項目,您應該可以看到x/y位置選項。

enter image description here

1

這裏有一個雨燕3.0版本最投票回答:

let soundButton = UIBarButtonItem(image:image , style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.soundPressed)) 

     let negativeSpacer = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) 
     negativeSpacer.width = -5 

     self.navigationItem.rightBarButtonItems = [negativeSpacer,soundButton] 
相關問題